【问题标题】:Android CheckBoxPreference Default ValueAndroid CheckBoxPreference 默认值
【发布时间】:2011-04-23 21:32:21
【问题描述】:

我的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 的步骤?

【问题讨论】:

    标签: android default-value checkboxpreference


    【解决方案1】:

    你必须先设置默认值:

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

    【讨论】:

    • 注意:我把它放在一个扩展应用程序的类中,而不是一个活动
    • @MobileMon 好声音!我正要把它放在一个 PreferenceFragment 中。为什么呢? :)
    • 如果我必须以编程方式编码,xml 中的默认值有什么用途?
    【解决方案2】:
        // 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】:

      使用 junkdog 的方法,但是对于它的价值,这是 Android 中的一个错误:

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

      【讨论】:

        猜你喜欢
        • 2013-03-07
        • 2014-11-18
        • 2012-03-17
        • 1970-01-01
        • 1970-01-01
        • 2012-09-28
        • 1970-01-01
        • 2019-03-12
        • 2011-09-04
        相关资源
        最近更新 更多