在我的设置中,有一个列表首选项。我创建了一个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"));
答案 0 :(得分:0)
ClassCastException
似乎是从sharedPref.getString()
引发的,因此我假设PreferenceManager
确实有listPref
由整数支持。
只需使用getInt()
,您的错误就会消失。