2011-10-13 9 views

cevap

31

Bunu public void onSharedPreferenceChanged(final SharedPreferences sharedPreferences, final String key) geçersiz kılabilirsiniz this question

yinelenen var görünüyor ve key.equals(<Your key for setting>) ile denilen olsun zaman böyle bir şey yapmak: Ayrıca

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

, onCreate() aynı olması mı Tercihleriniz doğru ilk kurulumunu ekranı .

3

Onay kutusu değerini alabilirsiniz. Ve sonra, tercihleri ​​etkinleştirmek/devre dışı bırakmak için pref.setEnabled(false);'u kullanabilirsiniz. Etkinleştirmek için, sadece aynı işlevi kullanın ve gerçek değeri koyun.

24

Bir varyant olarak, "bağımlılığı" ListBoxPref içine koymak mümkündür.

<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> 

Temelde, Muhteşemdin efendim

+0

onlar uyurken ebeveynler =) ile çalamaz bebek! – Mohamed

+0

Tam olarak aradığım şey ... Kodumdaki kullanımı devre dışı bırakmıştım ancak kullanıcıyı devre dışı bırakabildiklerini göstermeleri gerekiyordu. – ShadowZzz