2010-10-11 22 views
18

ho il seguente codice XML per il mio CheckBoxPreference:CheckBoxPreference Android Valore predefinito

<CheckBoxPreference 
    android:key="pref_boot_startup" 
    android:title="Auto start" 
    android:defaultValue="true" /> 

Ma quando posso recuperare la preferenza nel codice il valore è false.

sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 
boolean autoStart = sharedPreferences.getBoolean("pref_boot_startup", true); 

miei autoStart rendimenti variabili false.

C'è una ragione specifica per questo? Mi manca un passaggio per impostare il valore predefinito su true?

risposta

35

è necessario impostare i valori predefiniti prima: Metodo

@Override 
    protected void onCreate() 
    { 
     PreferenceManager.setDefaultValues(this, R.xml.preferences, false); 
     SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 
     boolean autoStart = sharedPreferences.getBoolean("pref_boot_startup", true); 

    {...} 
    } 
+1

Nota: I metti questo in una classe che estende l'applicazione, NON un'attività – MobileMon

+0

@MobileMon good shout! Stavo per metterlo in un PreferenceFragment. Perché però? :) –

+1

Che scopo ha il valore predefinito nel xml se devo programmarlo a livello di codice? –

3
// These two lines are working around an android bug: 
    // http://code.google.com/p/android/issues/detail?id=6641 
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
    prefs.edit().putBoolean(REFRESH_COUNTER_PREF, prefs.getBoolean(REFRESH_COUNTER_PREF, true)).commit();