方向更改时,为什么在PreferenceActivity上覆盖区域设置?
作者:互联网
我有一个应用程序,用户可以在其中更改其语言.
一切正常,仅在MainActivity.onCreate()上使用以下代码:
String lang = PreferenceManager.getDefaultSharedPreferences(this).getString("languagePref", "default");
Configuration config = getResources().getConfiguration();
if( lang.equals("default") ) lang = Locale.getDefault().getLanguage();
config.locale = new Locale(lang);
getResources().updateConfiguration(config, getResources().getDisplayMetrics());
重新启动应用程序或浏览活动时,它仍然是正确的语言.
唯一的问题是在PreferenceActivity屏幕上.方向更改时,PreferenceActivity标题(以及仅此标题)将更改为默认设备语言.
偏好仍然可以正确检查,如果我返回(关闭PreferenceActivity),该应用仍使用正确的语言,但在重新启动该应用之前,PreferenceActivity仍然是错误的.
我尝试在PreferenceActivity.onCreate()上强行使用上面的代码,尽管调试似乎还可以,但PrefenceActivity标题仍然错误.
这是我的PrefenceActivity代码:
public class PreferencesActivity extends PreferenceActivity {
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
此行为不会发生在任何其他Activity上:/
锁定屏幕方向不是一种选择.
有什么想法吗?
谢谢.
解决方法:
好的,这已为我修复.
@Override
protected void onSaveInstanceState(Bundle outState) {
String lang = PreferenceManager.getDefaultSharedPreferences(this).getString("languagePref", "default");
Configuration config = getResources().getConfiguration();
if( lang.equals("default") ) lang = Locale.getDefault().getLanguage();
config.locale = new Locale(lang);
getResources().updateConfiguration(config, getResources().getDisplayMetrics());
super.onSaveInstanceState(outState);
}
标签:preferenceactivity,android,localization 来源: https://codeday.me/bug/20191122/2060339.html