在Android

时间:2016-02-26 17:40:07

标签: android android-preferences

我正在开发一个示例应用程序,其中我有“ListPreference”,如下所示:

<ListPreference
    android:defaultValue="180"
    android:entries="@array/pref_sync_frequency_titles"
    android:entryValues="@array/pref_sync_frequency_values"
    android:key="sync_frequency"
    android:negativeButtonText="@null"
    android:positiveButtonText="@null"
    android:title="@string/pref_title_sync_frequency"/>

我将它绑定到这样的整数数组:

<string name="pref_title_sync_frequency">Sync frequency</string>
<string-array name="pref_sync_frequency_titles">
    <item>15 minutes</item>
    <item>30 minutes</item>
    <item>1 hour</item>
    <item>3 hours</item>
    <item>6 hours</item>
    <item>12 hours</item>
    <item>24 hours</item>
    <item>Never</item>
</string-array>
<integer-array name="pref_sync_frequency_values">
    <item>15</item>
    <item>30</item>
    <item>60</item>
    <item>180</item>
    <item>360</item>
    <item>720</item>
    <item>1440</item>
    <item>-1</item>
</integer-array>

根据我的理解,PreferenceFragment提供了首选项的持久性,我从中扩展了我拥有ListPreference的片段。除了在Android Studio中创建设置活动时提供的内容之外,我没有任何额外的代码:

public static class DataSyncPreferenceFragment extends PreferenceFragment

现在的问题是,当我尝试读取首选项时,我想将其读作这样的整数:

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
return sharedPref.getInt("sync_frequency", 0);

但是我得到了这个异常:java.lang.ClassCastException: java.lang.String无法强制转换为java.lang.Integer

我可以将首选项读作sting然后转换为int,但我希望首选项已经存储为Integer,因为我将它绑定到整数数组。为什么它存储为字符串,是否可以将其存储为整数?

0 个答案:

没有答案