我有一个问题,如果我打开我的 android 应用程序,然后进入系统设置更改语言,然后再次打开应用程序,除非应用程序被强制退出并重新启动,否则应用程序中的某些字符串将不会被翻译。知道为什么会这样吗?我没有android:configChanges
设置到"locale"
my 中的任何位置AndroidManifest
,所以这是否意味着所有活动都应该自行重新启动?
问问题
1509 次
2 回答
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);
}
我希望它会帮助你......
于 2013-07-15T17:55:05.253 回答
1
终于弄清楚了问题所在。未翻译的字符串被填充在静态类中。所以因为这个类只被实例化一次,字符串没有被重新填充正确的翻译。
于 2013-07-16T15:43:31.357 回答