java - 如何从 XML 获取默认值(不起作用)

标签 java android sharedpreferences

启动服务时,我需要检查特定设置( boolean 值)。请检查以下代码:

XML 代码:

 <CheckBoxPreference android:title="Enable Sleep" android:defaultValue="false" android:key="checkbox_preference"/>

Java 代码:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    boolean sleepEnabled = prefs.getBoolean("checkbox_preference", true);

如果( sleep 启用){

//代码

}

即使如此,XML 中的默认值是“false”,我在每次服务启动时都得到“true”。我知道这是因为我将“getBoolean()”方法中的参数设置为“true”,但我需要复选框的实际值..

为什么我在开始服务时总是得到“true”?

p.s 如果我进入“设置”并更改复选框的值就可以了。然后,当再次启动服务时,它会提取实际值。那么如何获取XML中设置的实际DEFAULT值呢?

最佳答案

更改此:

boolean sleepEnabled = prefs.getBoolean("checkbox_preference", true);

对此:

boolean sleepEnabled = prefs.getBoolean("checkbox_preference", false);

并查看文档: http://developer.android.com/reference/android/preference/Preference.html#attr_android:defaultValue

关于java - 如何从 XML 获取默认值(不起作用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16373690/

相关文章:

android - Proguard 破坏 Assets 或原始音频文件

android - 如何检查用户设备上安装的 Google Play GAMES 版本

android - sharedpreferences 中的 editor.remove() 不删除 key

android - 服务中的 SharedPreference 未更新

android - 一次编写整个 Android shared_preferences.xml

java双链表,简单链表转换为双链表

android - 如何在 Android 中设置 toast 的宽度?

java - 16.66 毫秒帧时间。当 sleep() 仅运行整毫秒时,您如何获得完美的 60 fps?

java - 如何仅使用 GWT 开发模块化企业应用程序

java - 在当前时间停止秒表