2011-10-13 35 views

回答

31

似乎是重複的this question

您可以覆蓋public void onSharedPreferenceChanged(final SharedPreferences sharedPreferences, final String key),當它被調用與key.equals(<Your key for setting>)做這樣的事情:

boolean isEnabled = sharedPreferences.getBoolean(key, true); 
getPreferenceScreen().findPreference("list box preference key").setEnabled(isEnabled); 
getPreferenceScreen().findPreference("list box preference key").setEnabled(!isEnabled); 

另外,不要在onCreate()同樣有您的偏好篩選合適的初始設置。

3

您可以獲取複選框的值。然後,要啓用/禁用首選項,您可以使用pref.setEnabled(false);要啓用,只需使用相同的功能並輸入真實值即可。

24

作爲一種變體,可以將「依賴」放入ListBoxPref中。

<PreferenceCategory 
android:key="key1" 
android:title="@string/title1"> 
<SwitchPreference 
    android:key="parents" 
    android:summaryOff="@string/do_smthng" 
    android:summaryOn="@string/do_smthng" 
    android:switchTextOff="@string/i_am_sleeping" 
    android:switchTextOn="@string/i_have_free_time" /> 
<CheckBoxPreference 
    android:key="baby" 
    android:dependency="parents" 
    android:title="@string/basic_habbits" 
    android:summaryOff="@string/play_with_parents" 
    android:summaryOn="@string/play_with_parents" 
    android:defaultValue="true" /> 
</PreferenceCategory> 

基本上,寶寶不能用

+0

你是真棒,先生的父母時,他們都在睡覺=)玩! – Mohamed

+0

準確地說,我一直在尋找...我禁用了我的代碼,但需要向用戶顯示他們已被禁用,因此他們可以打開它。 – ShadowZzz

相關問題