java - 在 .xml 中定义时,SharedPreferences 的 defaultValue 是否始终读取为字符串?

标签 java android xml sharedpreferences

我正在尝试检索默认值:

定义:

<integer name="keyOfDefaultValue">2</integer>

引用为:

android:defaultValue="@integer/keyOfDefaultValue"

实际代码:

SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
int intVar = sharedPrefs.getInt(keyOfDefaultValue, fallbackIntValue);

我收到 ClassCastException ,表明我正在尝试将字符串转换为整数。我已阅读有关默认值的 Android 文档:

http://developer.android.com/reference/android/preference/Preference.html#attr_android:defaultValue

所以我希望使用正确的类型,但显然我得到了一个字符串。

有人可以确认 .xml 中定义的默认值始终以字符串形式检索吗?或者您可以将我指向文档中对此进行解释的页面...

谢谢

最佳答案

如果您检查 AOSP 代码上不同类型首选项的返回值

EditTextPreferenceListPreference 返回字符串值

SwitchPreferenceCheckBoxPreference 返回 boolean 值

MultiSelectListPreference 返回一组字符串

如果你想改变它,我想你可以随时覆盖 onGetDefaultValue 在您的 customPreference 中,如果您有的话

关于java - 在 .xml 中定义时,SharedPreferences 的 defaultValue 是否始终读取为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23113547/

相关文章:

java - 为什么 java 在 System out 语句中遇到字符串后就开始将所有内容视为字符串?

android - 如何在 Android 浏览器中检查元素

android - java.lang.NullPointerException : Attempt to invoke virtual method 'void android.widget.Editor$SelectionModifierCursorController.show()' 异常

java - 使用 Java 将表从数据库导出到 XML 文件

java - 使用 JPasswordField 及其 getText/getPassword 方法

java - 如何在java中验证重叠否

android - 如何使用 RxJava 2 处理错误异常?

java - 添加非android xml文件到android项目

c# - XML结构问题

java - android.support.v7.widget.AppCompatTextView 无法实例化