如何从Android SharedPreference获取文本条目?

时间:2014-01-16 11:30:52

标签: android sharedpreferences android-preferences android-settings

我想从首选项中检索类的名称为V,VI,VII,但是,当我尝试获取它时,我将以格式5,6,7获取它们。

值存储如下

<string name="pref_standard">Standard</string>
<string-array name="pref_standard_list_titles">
    <item>V</item>
    <item>VI</item>
    <item>VII</item>
    <item>VIII</item>
    <item>IX</item>
    <item>X</item>
    <item>XI</item>
    <item>XII</item>
</string-array>
<string-array name="pref_standard_list_values">
    <item>5</item>
    <item>6</item>
    <item>7</item>
    <item>8</item>
    <item>9</item>
    <item>10</item>
    <item>11</item>
    <item>12</item>
</string-array>

首选项声明为

<ListPreference
  android:key="standards_list"
  android:title="@string/pref_standard"
  android:defaultValue="10"
  android:entries="@array/pref_standard_list_titles"
  android:entryValues="@array/pref_standard_list_values"
  android:negativeButtonText="@null"
  android:positiveButtonText="@null"/>

我使用此

调用该值
SharedPreferences sharedPref=PreferenceManager.getDefaultSharedPreferences(getActivity());
String standard_name=sharedPref.getString("standards_list","");

这只给出“pref_standard_list_values”中的数值。

如何获取“pref_standard_list_titles”中的文本值?

2 个答案:

答案 0 :(得分:3)

只需删除

行即可
android:entryValues="@array/pref_standard_list_values"

如果要在代码中翻译值,请使用

String[] texts = getResources().getStringArray(R.array.pref_standard_list_titles);
String[] values = getResources().getStringArray(R.array.pref_standard_list_values);

standard_name中查找values的索引,在texts

中查找该索引处的文本

答案 1 :(得分:0)

要获得参赛作品,请尝试:

String key = "standards_list";
Preference pref = findPreference(key);
if (pref instanceof ListPreference) {
    ListPreference listPref = (ListPreference) pref;
    CharSequence standard_name = listPref.getEntry(); // get currently saved into SharedPreferences single entry value
    CharSequence[] standard_values = listPref.getEntries(); // get all entry values
}

有关更多用例,请阅读this