【问题标题】:Converting ListPreference string to integer gives "Integer cannot be cast to String" exception将 ListPreference 字符串转换为整数给出“整数不能转换为字符串”异常
【发布时间】:2015-04-13 20:23:20
【问题描述】:

在我的设置中,有一个列表偏好。我创建了一个 arrays.xml(参见下面的代码)并将值设置为我的 ListPreference(参见下面的代码)。

Arrays.xml

    <string-array name="listArray">
        <item>minutes</item>
        <item>hours</item>
    </string-array>

    <string-array name="listValues">
        <item>60</item>
        <item>3600</item>
    </string-array>

</resources>

列表偏好

<ListPreference
            android:title="Set time: minute hour"
            android:key="listPref"
            android:defaultValue="1"
            android:entries="@array/listArray"
            android:entryValues="@array/listValues" />

我知道我必须使用字符串数组,并且从首选项中检索到的每个值都将是一个字符串。如下所示,我将 String 转换为 Integer。

但是当我这样做时,我得到:java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String

    SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
 int listPrefs = Integer.valueOf(sharedPref.getString("listPref", "3600"));

【问题讨论】:

  • 如果您尝试拨打getInt() 会发生什么?感觉就像 SharedPreferences 看到一个纯数字 String 并将其转换为 Integer 给你。

标签: java android string sharedpreferences android-preferences


【解决方案1】:

ClassCastException 似乎是从sharedPref.getString() 抛出的,因此我认为PreferenceManager 确实有由整数支持的listPref

只需使用getInt(),您的错误就会消失。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-18
    • 2012-02-21
    • 2010-12-31
    相关资源
    最近更新 更多