我正在阅读像
这样的共享偏好SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
然后使用preferences.getString("list_of_text_modes", "0")
我可以获得任何共享偏好的价值。在我的例子中(0或1)
是否有可能获得头衔,而不仅仅是价值?
例如。我正在使用ListPreference。
<ListPreference
android:entries="@array/list_of_text_modes"
android:entryValues="@array/list_of_text_mode_values"
android:key="list_of_text_modes"
android:summary=""
android:title="@string/title_language_mode"
android:defaultValue="default" />
<string-array name="list_of_text_modes">
<item>Default</item>
<item>Settings</item>
</string-array>
<string-array name="list_of_text_mode_values">
<item>0</item>
<item>1</item>
如果我选择“默认”,我现在得到“0”。我可以以某种方式阅读标题“默认”。或者使用偏好我只能读取值?
如果我没有0和1怎么办。如果我保存为“text1”和“tetx2”怎么办?我可以通过键,值对读取吗?
答案 0 :(得分:3)
如果您有标题索引,则可以从资源中提取标题。试试这段代码:
CharSequence[] titles = context.getResources().getTextArray(R.array.list_of_text_modes);
String myTitle = titles[titleIndex];
答案 1 :(得分:1)
你只能获得价值。如果您查看了可以从DDMS中提取的实际共享首选项文件 - &gt;数据 - 数据 - &gt;包裹名字。您将只看到值并存储密钥,而不是标题。
但这不是一个真正的问题,因为你已经在阵列中了。
祝你好运答案 2 :(得分:1)
我也试图解决这个问题。对于原始问题来说太迟了,但我想出了Hit的答案的变化。对于标题和值都是字符串的数组,找到索引并不简单。
<string-array name="sound_keys">
<item>Gong1</item>
<item>Gong2</item>
</string-array>
<string-array name="sound_values">
<item>gonghi</item>
<item>gongmid</item>
</string-array>
但是由于该值已知,您可以搜索value数组并以此方式获取索引,并使用它来从其数组中获取标题。我有一个这样的功能:
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
String prefValue = sp.getString("sound_values", "some default");
// the arrays used by the ListPreference
CharSequence[] keys = getApplicationContext().getResources().getTextArray(R.array.sound_keys);
CharSequence[] values = getApplicationContext().getResources().getTextArray(R.array.sound_values);
// loop and find index...
int len = values.length;
for (int i = 0; i < len; i++) {
if (values[i].equals(prefValue)) {
return (String) keys[i];
}
}
// if not found use some default value