将ListPreference字符串转换为整数会给出“Integer不能转换为String”异常

时间:2015-04-13 20:23:20

标签: java android string sharedpreferences android-preferences

在我的设置中,有一个列表首选项。我创建了一个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

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

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

但是当我这样做时,我得到: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"));

1 个答案:

答案 0 :(得分:0)

ClassCastException似乎是从sharedPref.getString()引发的,因此我假设PreferenceManager确实有listPref由整数支持。

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