在我的应用中,我正在使用另一个strings.xml进行英语翻译。通过以下方式更改语言:
private void saveLang(String lng) {
Locale locale = new Locale(lng);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
super.recreate();
}
这些天我注意到的问题是,在Android 6和7上绝对会忽略英语字符串文件,但在Android 8上可以正常工作。
所以我的问题是,为什么翻译不能在较旧的设备上运行,而在Android 8及更高版本上可用?屏幕仅重新加载,但文本未更新。
我做了很多实验,最后发现,当我只用getBaseContext().getResources()
代替this.getResources()
时,它也开始在较旧的android上工作!
奇怪的是,在Android 8上它与getBaseContext()一起使用