获取ListPreference选项的关键字(不是值) - 可能吗?
获取值当前所选项目的在ListPreference
很简单:获取ListPreference选项的关键字(不是值) - 可能吗?
String selected = sharedPrefs.getString(
getString(R.string.list_preference_array),
"default string"
);
但现在我需要获得当前所选项目的关键,来代替。这可能吗?
为了澄清,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:条目目前的选择。我错误地称它为“关键”,但它确实是一个“相应的标签”,它必须与实际内容不同。
猜测的一点:
int index = mylistpreference.findIndexOfValue(selected) // <- selected taken from your code above
String entry = mylistpreference.getEntries()[index];
功能是作为defined
SharedPreferences.getString(String key, String defaultValue);
因此,在你的示例代码,getString(R.string.select_string)
将返回键。
当您添加SharedPreference
时,您需要指定密钥,因此该密钥与您用于设置该值的密钥相同。
编辑:
使用SharedPreferences.getString()
与ListPreference键的键将返回值从列表中选择用户。您不需要为ListPreference数组中的每个选项创建键,并且这些键不会自动创建。使用与ListPreference的entryValues
相关的用例语句。
查看我的回复@ Erik的评论。 – uTubeFan
@uTubeFan,编辑我的答案。 –
只需使用:
mylistpreference.getEntry()
获得mylistpreference使用:
mylistpreference= (ListPreference) getPreferenceScreen().findPreference(key);
关键是android:关键你的偏好定义。 xml里面< ListPreference>标签。
@shai你的方法滞后,以最后一次选择的条目
listPreference.getEntry()
而是@Erik的方法很好地工作
int index = listPreference.findIndexOfValue((String) value)
String entry = listpreference.getEntries()[index];
它很好。你节省了我的时间,谢谢 –
没有的GetString(R.string.select_string)的你的关键'收到? – Erik
@Erik'getString(R.string.select_string)'是整个ListPreference数组的关键字(“名称”),而不是选择。 – uTubeFan
@uTubeFan,如果你使用的是ListPreference,没有关键的选定项目,只有一个条目... –