我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);