2

我想从首选项中检索类的名称为 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”中的文本值?

4

3 回答 3

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_namein的索引values及其在该索引处的文本 intexts

于 2014-01-16T11:36:14.270 回答
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
}

有关更多用例,请阅读

于 2016-12-16T10:28:15.520 回答
0

要获取当前选定条目值的名称,请使用以下命令:

  public StringBuilder getSelectedStandardListItem() {
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    StringBuilder stringBuilder = new StringBuilder();
    stringBuilder.append('\n');
    String current_standard_list_item = prefs.getString("pref_standard_list_values", "");
    String[] standard_list = getResources().getStringArray(R.array.pref_standard_list_titles);
    String[] standard_list_value = getResources().getStringArray(R.array.pref_standard_list_values);

    for (int i = 0; i < 7; i++) {
        if (current_standard_list_item.equals(standard_list_value[i])) {
            switch (i) {
                case 0:
                    stringBuilder.append(standard_list[0]);
                    break;
                case 1:
                    stringBuilder.append(standard_list[1]);
                    break;
                case 2:
                    stringBuilder.append(standard_list[2]);
                    break;
                case 3:
                    stringBuilder.append(standard_list[3]);
                    break;
                case 4:
                    stringBuilder.append(standard_list[4]);
                    break;
                case 5:
                    stringBuilder.append(standard_list[5]);
                    break;                       
                case 6:
                    stringBuilder.append(standard_list[6]);
                    break;
                case 7:
                    stringBuilder.append(standard_list[7]);
                    break;              
            }
        }

    }
    return stringBuilder;
}

或者,按值获取条目名称:

    public StringBuilder getEntryNameByValue(String value) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append('\n');
String[] standard_list = getResources().getStringArray(R.array.pref_standard_list_titles);
String[] standard_list_value = getResources().getStringArray(R.array.pref_standard_list_values);

for (int i = 0; i < 7; i++) {
    if (value.equals(standard_list_value[i])) {
        switch (i) {
            case 0:
                stringBuilder.append(standard_list[0]);
                break;
            case 1:
                stringBuilder.append(standard_list[1]);
                break;
            case 2:
                stringBuilder.append(standard_list[2]);
                break;
            case 3:
                stringBuilder.append(standard_list[3]);
                break;
            case 4:
                stringBuilder.append(standard_list[4]);
                break;
            case 5:
                stringBuilder.append(standard_list[5]);
                break;                       
            case 6:
                stringBuilder.append(standard_list[6]);
                break;
            case 7:
                stringBuilder.append(standard_list[7]);
                break;              
        }
    }
}
return stringBuilder;

}

于 2021-11-02T14:39:54.830 回答