1

我正在使用此方法更改我的应用程序内的区域设置:

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".

4

1 回答 1

1

我以一种奇怪的方式解决了这个问题。我刚刚在更改语言方法中再次调用了 setContentView:

setContentView(R.Layout.MainLayout);
于 2013-09-03T06:04:39.170 回答