【发布时间】:2017-03-12 02:43:45
【问题描述】:
我无法理解如何将ListPreference 的条目值保存为整数。截至目前,我已将我的ListPreference 定义如下:
<ListPreference
android:defaultValue="@string/list_preference_sorting_options_default_value"
android:title="@string/list_preference_sorting_options_title"
android:key="@string/list_preference_sorting_options_key"
android:entries="@array/list_preference_sorting_options_entries"
android:entryValues="@array/list_preference_sorting_options_entry_values"/>
...entries 和 entryValues 属性在以下数组中定义:
<array name="list_preference_sorting_options_entries">
<item>@string/list_preference_sorting_options_entry_popularity</item>
<item>@string/list_preference_sorting_options_entry_top_rated</item>
</array>
<array name="list_preference_sorting_options_entry_values">
<item>@string/list_preference_sorting_options_entry_value_popularity</item>
<item>@string/list_preference_sorting_options_entry_value_top_rated</item>
</array>
我了解我在 list_preference_sorting_options_entry_values 数组中使用字符串值。但是,如果我要以不同的方式定义我的数组,例如:
<array name="list_preference_sorting_options_entry_values">
<item>0</item>
<item>1</item>
</array>
...然后在我的应用程序中,如果我尝试访问设置活动,我的应用程序会崩溃。
此外,如果我尝试从SharedPreferences 将我的条目值读取为整数(即使它们存储为字符串),如下所示:
int methodFlag = preferences.getInt(getString(R.string.list_preference_sorting_options_key), 0);
...然后我收到一个无法将 String 转换为 int 的 Java 错误。为了正确获取int的入口值,我需要使用getString()方法,然后解析成int:
String preferenceMethodFlagString = preferences.getString(getString(R.string.list_preference_sorting_options_key),getString(R.string.list_preference_sorting_options_default_value));
int preferenceMethodFlag = Integer.parseInt(preferenceMethodFlagString);
有没有办法让我通过arrays.xml 直接存储整数值?如果我使用这个实现(使用 arrays.xml),我是否总是需要将 String 解析为 int?
我见过其他 SO 问题,如果使用 SharedPreferences.Editor,整数值将存储到 ListPreference 的条目值中。这是存储整数值的唯一方法吗?
【问题讨论】:
-
尚未收到对此的回复。有人会碰巧对此有任何意见吗?
-
如果将条目值放入整数数组而不是数组会怎样?
标签: java android android-sharedpreferences