2010-10-11 28 views
18

我有我的CheckBoxPreference以下XML代碼:的Android CheckBoxPreference默認值

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

但當我檢索代碼優先值false

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

autoStart可變回報false

這是否有特定的原因?我是否錯過了將默認值設置爲true的步驟?

回答

35

你必須先設置的默認值:

@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

注:我把它放在擴展應用程序的類中,而不是一個活動 – MobileMon 2014-05-16 17:56:40

+0

@MobileMon好喊!我正準備將它放在PreferenceFragment中。爲什麼? :) – 2017-03-14 21:04:18

+1

如果我必須以編程方式對其進行編碼,那麼xml中的默認值有什麼用途? – 2017-09-27 20:50:38

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