当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");
我使用此代码来更新我的首选项摘要,它每次都有效。