Android CheckBoxPreference Значение по умолчанию - PullRequest
18 голосов
/ 11 октября 2010

У меня есть следующий XML-код для моего 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?

Ответы [ 3 ]

35 голосов
/ 12 октября 2010

Сначала необходимо установить значения по умолчанию:

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

     {...}
    }
13 голосов
/ 06 декабря 2010

Используйте метод junkdog, но, как ни крути, это ошибка в Android:

http://code.google.com/p/android/issues/detail?id=6641

3 голосов
/ 13 января 2012
    // 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();
...