在.xml中定义时,SharedPreferences的defaultValue是否始终读为String?

时间:2014-04-16 15:17:15

标签: 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声明我正在尝试将String转换为整数。我已阅读有关默认值的Android文档:

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

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

有人可以确认.xml中定义的默认值总是作为字符串检索吗?或者您可以将我指向文档中的一个页面,其中说明了这一点......

由于

1 个答案:

答案 0 :(得分:1)

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

EditTextPreferenceListPreference返回字符串值

SwitchPreferenceCheckBoxPreference返回布尔值

MultiSelectListPreference返回一组字符串

如果你想改变它,我猜你总是可以改写 你的customPreference中的onGetDefaultValue,如果你有一个