我有PreferenceActivity
其中定義了大量的PreferenceCategories
。如果我有給定類別的android:key
。以編程方式滾動PreferenceActivity
是否有可能以編程方式將Activity
滾動到此類別?
我有PreferenceActivity
其中定義了大量的PreferenceCategories
。如果我有給定類別的android:key
。以編程方式滾動PreferenceActivity
是否有可能以編程方式將Activity
滾動到此類別?
您可以通過這樣的活動喜好迭代:
PreferenceScreen screen = getPreferenceScreen();
int i;
for(i = 0; i < screen.getPreferenceCount(); i++) {
String key = screen.getPreference(i).getKey();
// be careful, because key will be null if no android:key is specified
// (as is often the case for PreferenceCategory elements)
if("myKey".equals(key))
break;
}
// PreferenceActivity extends ListActivity, so the ListView is accessible...
getListView().setSelection(i);
測試了與Android SDK 14,它工作正常。
注意雖然,在onCreate或onResume裏面調用getListView().setSelection(i)
沒有任何影響。必須在繪製活動後調用它。
getPreferenceCount()方法計算所有PreferenceCategories及其嵌套的首選項。不知道它爲PreferenceScreen做了什麼,儘管我確信有一些實驗可以揭示。
我知道這是一個老回答的問題,但我發現比遍歷所有類別更好的方法。
PreferenceCategory myCat = (PreferenceCategory) findPreference("myKey");
int position = myCat.getOrder();
getListView().setSelection(position);