我的偏好设置是通过PreferenceActivity
设置的,onBuildHeaders()
从PreferenceFragments
xml资源加载<preference-headers>
。
其中一个片段包含ListPreference
语言。
OnSharedPreferenceChangeListener
已正确(未)注册,并且onSharedPreferenceChanged()
已正确调用。调用onSharedPreferenceChanged()
时,首先我更新默认语言环境:
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
mContext.getResources().updateConfiguration(config, mContext.getResources().getDisplayMetrics());
然后我更新了这个片段的首选项和首选项摘要(正确地从新设置的语言环境中提取字符串)。
返回onResume
中的PreferenceActivity
:
@Override
protected void onResume() {
super.onResume();
invalidateHeaders();
}
强制首选项片段在新设置的语言环境中正确显示其标题。
一切都很好,但让我感到困扰的是:
PreferenceFragment
标题未更改PreferenceActivity
标题未更改我该如何解决?
(minSdkVersion为15)
答案 0 :(得分:1)
自己解决了。以下是所有方面......
PreferenceFragment
标题未更改更新PreferenceFragment
中的标题和摘要时,还会更新PreferenceActivity
标题(实际上为PreferenceFragment
提供标题):
getActivity().setTitle(getString(R.string.title_activity_settings));
PreferenceActivity
标题未更改在onResume()
的{{1}}中,更新其标题:
PreferenceActivity
跟踪MainActivity的setTitle(getString(R.string.title_activity_settings));
中的区域设置(String),并将其与onCreate()
中的当前区域设置(String)进行比较。如果不同,请使用以下命令重新启动活动:
onResume()