extends PreferenceFragment并将这样的代码添加到onCreate方法中:

 final ListPreference pref = (ListPreference) findPreference(PREF_NAME);
 String[] array={getString(R.string.variant1), getString(R.string.variant2)};
 CharSequence[] entries = array;
 CharSequence[] entryValues = array;
 pref.setEntries(entries);
 pref.setDefaultValue(getString(R.string.variant1));
 pref.setEntryValues(entryValues);


具有两个变体(它们无法打开/关闭,因此我使用ListPreference)。

所以我的问题是:我一方面希望在用户界面中看到合适的翻译,所以您可以看到我使用了getString
SharedPreferences的另一只手中,我想使用不依赖于用户语言的键来存储值,该如何实现?

最佳答案

EntryValues数组用作条目数组中各项的键,因此这两个数组的大小应相同。向用户显示了entrys数组中的值(因此需要进行翻译),但是在共享首选项中,保存了entryValues数组中的选定值(因此不应将其本地化)。

在您的代码中,您可以将其更改为如下所示:

    final ListPreference pref = (ListPreference) findPreference(PREF_NAME);
    CharSequence[] entries = new String[]{getString(R.string.variant1), getString(R.string.variant2)};
    CharSequence[] entryValues = {"variant1", "variant2"};
    pref.setEntries(entries);
    pref.setDefaultValue("variant1");
    pref.setEntryValues(entryValues);

10-06 14:58