2010-10-11 32 views
18

tengo el siguiente código XML para mi CheckBoxPreference:Android CheckBoxPreference Valor predeterminado

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

Pero cuando recupero la preferencia en el código es el valor false.

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

Mis autoStart rendimientos variables false.

¿Hay alguna razón específica para esto? ¿Me falta un paso para establecer el valor predeterminado en true?

Respuesta

35

tiene que configurar los valores por defecto en primer lugar: método

@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 poner esto en una clase que extiende la aplicación, NO una actividad – MobileMon

+0

@MobileMon ¡buen grito! Estaba a punto de ponerlo en un PreferenceFragment. ¿Por qué sin embargo? :) –

+1

¿Para qué sirve el valor predeterminado en el servidor xml si tengo que codificarlo programáticamente? –

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();