【问题标题】:CheckBoxPreference Default ValueCheckBoxPreference 默认值
【发布时间】:2013-03-07 12:07:18
【问题描述】:

我有一个 CheckBoxPreference 定义如下:

<CheckBoxPreference
    android:defaultValue="true"
    android:key="prefVisible"
    android:summary="@string/pref_visible_summary"
    android:title="@string/pref_visible" >
</CheckBoxPreference>

我的应用程序使用此首选项来控制视图的可见性。当我第一次启动我的应用程序时(在一个新的 wiped 模拟器上),视图没有显示。但是,当我进入首选项屏幕(活动)时,复选框显示为选中状态。

这是否意味着 defaultValue 属性实际上并未设置首选项,而只是在没有基础数据时设置复选框的值(就像全新安装的情况一样)。而且这是否也意味着只有在用户第一次进入/退出首选项屏幕(活动)后才设置首选项,否则是未定义

请注意,为了让我的应用按照我想要的方式工作,我依赖于首选项 getter 方法的默认值参数,如下所示:

SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
boolean isVisible = sharedPrefs.getBoolean("prefVisible", true); // default = true

这让我有点困惑,为什么有两种方法可以控制首选项的默认值:在 Xml 中定义它或在 getBoolean 方法中提供默认值。

【问题讨论】:

    标签: android checkbox default-value preference


    【解决方案1】:

    如果您调用 PreferenceManager.setDefaultValues,则无法设置首选项。因此,如果您在第一次启动应用程序时调用它,那么您的视图就会显示出来。
    你可以在http://developer.android.com/guide/topics/ui/settings.html阅读更多内容

    【讨论】:

    • 所以在我的主要活动的 onCreate() 方法中只需调用 PrefereceManager.setDefaultValues?
    • 很好奇,如果 UI 定义 (xml) 也有 getter 方法,为什么还要有默认值?
    • 是的,但要小心标志参数。我忘记了再次调用它不会重置首选项是什么。
    • “标志参数”是什么意思?
    • setDefautValues 读取您在 XML 中设置的默认值并设置它们。
    猜你喜欢
    • 2011-04-23
    • 2014-11-18
    • 2012-03-17
    • 2018-09-12
    • 2015-05-22
    • 1970-01-01
    • 2012-07-28
    • 2019-07-05
    • 2010-12-05
    相关资源
    最近更新 更多