我在我的启动器活动中设置了一个本地,在一两秒后,语言环境设置重置为设备的系统区域设置。
经过几个小时的挖掘,我找到了罪魁祸首,google admob。 在启动它的webview时,它会重写Configuration
,这会造成混乱,包括布局,字符串等。
我能在这做什么吗?
答案 0 :(得分:0)
问题是由于在17以上的API上使用了已弃用的updateConfiguration
,以下代码解决了问题(在活动中),并设置了持久的区域设置。
public void attachBaseContext(Context base) {
Resources resources = base.getResources();
Locale locale = new Locale("ru");
Locale.setDefault(locale);
Configuration config = resources.getConfiguration();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
config.setLocale(locale);
base = base.createConfigurationContext(config);
}
else {
config.locale = locale;
resources.updateConfiguration(config, resources.getDisplayMetrics());
}
super.attachBaseContext(base);
}