从共享首选项中读取区域设置不适用于MainActivity

时间:2013-09-02 12:49:58

标签: java android sharedpreferences

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

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"

1 个答案:

答案 0 :(得分:1)

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

setContentView(R.Layout.MainLayout);