我正在尝试检索默认值:
定义:
<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 代码上不同类型首选项的返回值
EditTextPreference
、ListPreference
返回字符串值
SwitchPreference
,CheckBoxPreference
返回 boolean 值
MultiSelectListPreference
返回一组字符串
如果你想改变它,我想你可以随时覆盖 onGetDefaultValue 在您的 customPreference 中,如果您有的话
关于java - 在 .xml 中定义时,SharedPreferences 的 defaultValue 是否始终读取为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23113547/