我正在使用此方法更改我的应用程序内的区域设置:
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 字符串变量随后被保存到 SharedPreferences。在我的情况下,此变量是"sl"
或"en"
(默认为"en"
)。
然后我在每次应用程序启动时调用这个(相同的)方法(每次打开 MainActivity):
String language = getString("lang");
setLanguageSettings(language);
语言环境已成功更改(我检查了日志),但问题是在 MainActivity 中看不到更改。如果我打开任何其他活动,则语言是正确的,但 MainActivity"en"
即使它应该是"sl"
. 我必须重新启动 MainActivity 才能使其成为"sl"
.