列表首选项仅在第二次选择条目时更新其值



ListPreference中的语言发生变化时,在我的SettingsFragment类中onSharedPreferenceChanged()方法中调用此答案setLanguage()方法。

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

更改语言工作正常,但是当在onCreate()中的ListPreference对象上调用setSummary()时,它仅在第二次选择必要的语言时更改。

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

附言如果未调用setLanguage(),则摘要将按原样更新。

而不是

langPreference.setSummary(langPreference.getEntry());

尝试

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

我使用此代码来更新我的首选项摘要,它每次都有效。

最新更新