Java 从共享首选项中读取区域设置不会';我不为主要活动工作
我正在使用此方法更改应用程序中的区域设置:Java 从共享首选项中读取区域设置不会';我不为主要活动工作,java,android,sharedpreferences,Java,Android,Sharedpreferences,我正在使用此方法更改应用程序中的区域设置: public void setLanguageSettings(String localeLang){ Locale locale = new Locale(localeLang); saveString("lang", localeLang); Locale.setDefault(locale); Configuration configSlo = new Configuration(); configSlo.
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字符串变量随后保存到SharedReferences。在我的例子中,这个变量是“sl”
或“en”
(默认值是“en”
)
然后,每当应用程序启动时(每次打开MainActivity时),我都会调用这个(相同的)方法:
区域设置已成功更改(我使用日志检查),但问题是在MainActivity中看不到更改。如果我打开任何其他活动,语言是正确的,但是主活动仍然是
“en”
,即使它应该是“sl”
。我必须重新启动MainActivity,才能使它成为“sl”
我以一种奇怪的方式解决了这个问题。我刚刚在change language方法中再次调用了setContentView:
setContentView(R.Layout.MainLayout);
我用一种奇怪的方式解决了这个问题。我刚刚在change language方法中再次调用了setContentView:
setContentView(R.Layout.MainLayout);
您必须在应用程序启动时检查它,并在您的活动中在onResume()方法中调用它……。我添加了onResume和此代码,但它仍然不起作用。但是更改语言后,您必须从共享首选项中检查local,如果它是“sl”然后返回true,否则返回false意味着返回英语lang?我不太确定你想说什么,你必须在应用程序启动时检查它,并在你的活动中在onResume()方法中调用它……….我添加了onResume和此代码,但它仍然不起作用。但是在更改语言后,你必须从共享首选项中检查本地是否为“sl”然后返回true,否则返回false意味着返回英语lang?我不太清楚你想说什么