2011-10-13 5 views

risposta

31

Sembra che sia duplicato this question

È possibile ignorare public void onSharedPreferenceChanged(final SharedPreferences sharedPreferences, final String key) e quando vieni chiamato con key.equals(<Your key for setting>) fare qualcosa di simile:

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

Inoltre, lo stesso in onCreate() di avere tue preferenze schermo corretta configurazione iniziale .

3

È possibile ottenere il valore della casella di controllo. E poi, per abilitare/disabilitare le preferenze, è possibile utilizzare pref.setEnabled(false); Per abilitare, basta usare la stessa funzione e inserire il valore vero.

24

Come variante, è possibile inserire la "dipendenza" in 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> 

In sostanza, il bambino non può giocare con i genitori quando sono dormendo =)

+0

Sei sir impressionante! – Mohamed

+0

Esattamente quello che stavo cercando ... Avevo disabilitato l'uso nel mio codice, ma avevo bisogno di mostrare all'utente che sono disabilitati in modo che possano accenderlo. – ShadowZzz