0

我有一个 CheckBoxPreference 定义如下:

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

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

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

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

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

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

4

1 回答 1

1

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

于 2013-03-18T23:46:35.377 回答