[英]Reading locale settings from shared preferences doesn't work for the MainActivity
我正在使用以下方法在我的应用程序中更改区域设置:
public void setLanguageSettings(String localeLang){
Locale locale = new Locale(localeLang);
saveString("lang", localeLang);
Locale.setDefault(locale);
Configuration configSlo = new Configuration();
configSlo.locale = locale;
getBaseContext().getResources().updateConfiguration(configSlo, getBaseContext().getResources().getDisplayMetrics());
}
如您所见,然后将localeLang String变量保存到SharedPreferences。 在我的情况下,此变量为"sl"
或"en"
(默认为"en"
)。
然后,每次应用程序启动时(每次打开MainActivity时)我都调用此(相同)方法:
String language = getString("lang");
setLanguageSettings(language);
语言环境已成功更改(我检查了日志),但问题是在MainActivity中看不到更改。 如果我打开任何其他活动,则该语言是正确的,但是MainActivity仍然是"en"
即使它应该是"sl"
。 我必须重新启动MainActivity才能使其成为"sl"
。
我以一种奇怪的方式解决了这个问题。 我只是在更改语言方法中再次调用setContentView:
setContentView(R.Layout.MainLayout);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.