I 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中,我想用不依赖用户语言的密钥存储值,我如何实现这一点?
发布于 2017-02-17 20:08:45
EntryValues数组用作条目数组中项的键,因此这两个数组的大小应该相同。对于用户,将显示条目数组中的值(因此需要翻译它们),但是在共享首选项中,从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);https://stackoverflow.com/questions/42303925
复制相似问题