我有一个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方法中提供默认值。
答案 0 :(得分:1)
如果您调用 PreferenceManager.setDefaultValues ,则无法设置首选项。因此,如果您在首次启动应用时调用此功能,则会显示您的视图 您可以在http://developer.android.com/guide/topics/ui/settings.html
了解更多信息