我遇到了一个问题,如果我打开我的Android应用程序,然后进入系统设置更改语言,然后再次打开应用程序,应用程序中的一些字符串将不会被翻译,除非该应用程序是强制退出并重新启动。知道为什么会这样吗?我的android:configChanges
中的任何地方都没有"locale"
设置AndroidManifest
,所以这是不是意味着所有活动都应该自行重启?
答案 0 :(得分:2)
我也有这个问题。我使用下面的代码在一些StackOverflow答案中发布,然后它改变了语言而没有刷新活动
public void setLocale(String lang) {
myLocale = new Locale(lang);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
onConfigurationChanged(conf);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
// refresh your views here
lblLang.setText(R.string.langselection);
super.onConfigurationChanged(newConfig);
}
我希望它能帮到你.......
答案 1 :(得分:0)
终于找到了问题所在。未翻译的字符串正在静态类中填充。因为这个类只被实例化一次,所以字符串没有通过正确的翻译再次重新填充。