gpt4 book ai didi

android - SharedPreferences.getInt() 导致 ClassCastException - 为什么?

转载 作者:IT王子 更新时间:2023-10-28 23:29:37 24 4
gpt4 key购买 nike

我在首选项 XML 中定义了一个简单的(用户不可编辑的)数字设置,如下所示:

<EditTextPreference
android:key="@string/numeric_val"
android:defaultValue="0" />

我用这个简单的语句阅读它:

sharedPrefs.getInt(getString(R.string.numeric_val), 3)

它可以工作,但是当我尝试阅读它时,在应用程序安装后第一次,它会生成 ClassCastException .

documentationgetInt() “如果此名称的首选项不是 int,则抛出 ClassCastException。” - 我知道此首选项已明确定义为 <EditTextPreference> (字符串?)但是,如果这是异常的原因,我应该如何使用 SharedPreferences.getInt() ?

我知道我可以使用 SharedPreferences.getString()相反,然后自己进行解析/转换,但是 SharedPreferences.getInt() 的目的是什么? ?

最佳答案

您可以将首选项存储为 sharedPreferences.edit().putInt(..).commit()(例如);

然后将它们作为 getInt 获取。但是,如果您使用 EditTextPreference,它会将首选项的类型设置为字符串。因此,如果您使用 EditTextPreference 存储一些数据,请使用 Integer.valueOf(getString) 将其取回。

如果,你把它手动,使用getInt()

作为一种解决方法,您可以在此 EditTextPreference 上设置 onPreferenceChangeListener,当用户更改它时,您将手动将其保存为 int,这样 getInt 将正常工作。

关于android - SharedPreferences.getInt() 导致 ClassCastException - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7257232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com