web-dev-qa-db-ja.com

Android CheckBoxPreferenceのデフォルト値

CheckBoxPreference用に次のXMLコードがあります。

<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に設定する手順がありませんか?

18
Donal Rafferty

最初にデフォルトを設定する必要があります。

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

     {...}
    }
35
junkdog

ジャンクドッグの方法を使用しますが、それだけの価値があるので、これはAndroidのバグです。

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

13
joemccann
    // 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();
3
walkarounder