我有一个 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 方法中提供默认值。