我正在使用此方法更改应用内的区域设置:
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);
Locale已成功更改(我使用log检查)但问题是在MainActivity中无法看到更改。如果我打开任何其他活动,语言是正确的,但MainActivity仍然是"en"
,即使它应该是"sl"
。我必须重新启动MainActivity才能使其成为"sl"
。
答案 0 :(得分:1)
我以一种奇怪的方式解决了这个问题。我刚刚在更改语言方法中再次调用了setContentView:
setContentView(R.Layout.MainLayout);