2012-11-29 159 views
3

我需要基於另一個應用程序構建應用程序。在我的PreferenceScreen中,我有2個ListPreference對象。第二個依賴於第一個和禁用,直到第一個被選中(仍然需要計算出一個)設置ListPreference在默認情況下取消選中

我想設置第一個ListPreference在我的應用程序首次啓動時不被選中。我可以通過不分配鍵來做到這一點,但是我能夠在沒有鍵的情況下檢索ListPreference的值嗎?有沒有另外一種方法呢?

我可以用下面的代碼達到我PreferenceScreen首如果ListPreferce沒有一個鍵:

ListPreference locationList = (ListPreference)getPreferenceScreen().getRootAdapter().getItem(1);' 

我這樣做是爲每首我需要一個參考。使用SharedPreference會更好嗎?

回答

0

在你的喜好將XML,你可以使用你的第二個ListPreference如下:

android:dependency="key_of_first_listpreference" 
android:enabled="false" 

然後在你的代碼,你可以添加一個偵聽器,以便在選擇第一listpreference可以填充第二listpreference並使其如此:

final PreferenceScreen prefsRoot = (PreferenceScreen)getPreferenceScreen(); 
final ListPreference lpFirst = (ListPreference) prefsRoot.findPreference("first_listpref_key"); 
final ListPreference lpSecond = (ListPreference) prefsRoot.findPreference("second_listpref_key"); 

lpFirst.setOnPreferenceChangeListener(new OnPreferenceChangeListener(){ 
    @Override public boolean onPreferenceChange (Preference preference, Object newValue) 
    { 
     lpSecond.setEntries(R.array.bg_colors); 
     lpSecond.setEntryValues(R.array.bg_color_values); 
     lpSecond.setEnabled(true); 
     return true; 
    } 
}); 
相關問題