2011-11-17 68 views

回答

4

您可以通過這樣的活動喜好迭代:

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做了什麼,儘管我確信有一些實驗可以揭示。

3

我知道這是一個老回答的問題,但我發現比遍歷所有類別更好的方法。

PreferenceCategory myCat = (PreferenceCategory) findPreference("myKey"); 
int position = myCat.getOrder(); 
getListView().setSelection(position);