仅当第二次选择条目时,ListPreference才会更新其值

时间:2019-08-12 20:00:27

标签: android locale android-preferences

更改ListPreference中的语言后,将调用setLanguage()类中onSharedPreferenceChanged()方法中this answer中的SettingsFragment方法。

String defaultCode = getActivity().getString(R.string.string_english_code);
String langCode = sharedPreferences.getString(PREF_LANGUAGE, defaultCode);
setLanguage(getActivity(), langCode);
((SettingsActivity) getActivity()).restartFragment();

更改语言是可以的,但是在setSummary()中的ListPreference对象上调用onCreate()时,只有第二次选择必要的语言时,它才会更改。

ListPreference langPreference = (ListPreference) findPreference(PREF_LANGUAGE);
langPreference.setSummary(langPreference.getEntry());

P.S。如果未调用setLanguage(),则摘要将按原样更新。

1 个答案:

答案 0 :(得分:0)

代替

langPreference.setSummary(langPreference.getEntry());

尝试

langPreference.setSummary(PreferenceManager.getDefaultSharedPreferences(context).getString("key", "default value");

我使用此代码更新我的“首选项”摘要,每次都能使用。