我使用PreferenceActivity让用户设置一些值.

我已经把android:defaultValue=""美元都给他们定好了.

当我启动我的应用程序时,我需要首选项,或者如果它们还没有手动设置,我需要默认值:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
boolean value = prefs.getBoolean("key"), false); 

然而,当我android:defaultValue="true"岁的时候,我仍然可以得到false分.因此,XML中设置的defaultValue看起来不是在任何地方使用,而是在初始化Preferences-Screen时使用.

我不想硬编码getBoolean()方法中的默认值.那么,有没有办法只在1个位置定义默认值?

推荐答案

这个问题与我的类似:

initialize-preferences-from-xml-in-main-activity

只需在onCreate方法中使用以下代码:

PreferenceManager.setDefaultValues(this, R.xml.preference, false);

它将从XML加载您的首选项,最后一个参数(readAgain)将保证用户首选项不会被覆盖.这意味着将readAgain参数设置为false意味着只有在以前从未调用过此方法时,才会设置默认值,因此您无需担心每次创建活动时都会覆盖用户的设置

请看一下Android API中的PreferenceManager.setDefaultValues,以便进一步研究.

Android相关问答推荐

使用kotlin kotlinx序列化与generic

理解修饰符<;方法>;与修饰符<;方法>;:效果和行为解释(Android开发者Jetpack Compose)

我到底应该如何分享我的应用程序中的图片?

如何删除Jetpack Compose中的Textfield底线

为什么当我在装有Firebase的安卓系统中登录苹果时,收到的邮箱为空?

Android Kotlin ImageView内置于Kotlin ImageView中.适配器未按预期更新

Jetpack Compose-如何在进入新产品线之前删除单词?

Android 14预测性背部手势-闪烁的白色背景色

Android v31 及更低版本中 ImageView 中的圆角

使用 Jetpack Compose 在 Android TV 上启用系统声音

可从 Play store 下载链接访问未发布的应用

ArrayList 上的 Android intent.getParcelableArrayListExtra 引发 Nullpointer 异常

延时kotlin中时分秒的使用方法

组成不重叠的元素

在移动设备上看到时如何增加 PasswordField 文本?

组合 - 重新组合图像

Kotlin 调用带参数的函数 Any is xxx ||任何 yyy 都不起作用

如何在 Jetpack Compose 中更改 ModalNavigationDrawer 的抽屉容器 colored颜色 ?

房间实时数据:启动时崩溃

如何在 flow.stateIn() 之后从流中的另一个函数发出emits ?