【发布时间】:2011-08-31 17:46:51
【问题描述】:
在ListPreference 中获取当前选定项目的值 很简单:
String selected = sharedPrefs.getString(
getString(R.string.list_preference_array),
"default string"
);
但现在我需要获取当前所选项目的 key。这可能吗?
为了澄清,XML 文件中的典型 ListPreference 定义具有以下组件:
<ListPreference
android:key="@string/list_preference_array"
android:title="Title of ENTIRE list (not seen by user?)"
android:summary="this is what the user sees in small fonts"
android:defaultValue="just in case"
android:entries="@array/user_friendly_labels"
android:entryValues="@array/code_meaningful_strings"
android:dialogTitle="User Prompt(big font)"
android:showDefault="true"
android:showSilent="true"
/>
sharedPrefs.getString() 返回的是来自 android:entryValues 的当前选择。我有兴趣获得的是来自 android:entries 的当前选择。我错误地称它为“key”,但实际上它是一个“对应标签”,它必须与实际内容不同。
【问题讨论】:
-
不是 getString(R.string.select_string) 的关键吗?
-
@Erik
getString(R.string.select_string)是整个 ListPreference 数组的键(“名称”),而不是选择。 -
@uTubeFan,如果您使用 ListPreference,则所选项目没有键,只有一个条目...
-
@John Hmmm... 那
android:entries=是什么意思?返回的字符串是来自android:entryValues=的选择,但我需要获取选定的条目(由于缺少更好的名称,我可能错误地将其称为“键”)。 -
android:entries是用户在列表弹出时将看到的文本,而android:entryValues是用户单击条目后将返回给您的值。您的代码中的任何内容都不需要android:entries值。如果您确实需要它,那么您应该将entries和entryValues设置为相同的东西。
标签: android android-preferences