我用两种语言开发应用程序。用户通过在菜单中选择他们想要的语言来改变语言环境。这有效,一切都可以翻译,但活动标签。我尝试了在互联网上找到的所有方法,但似乎没有任何效果。
这是我的onOptionsItemSelected代码
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.france) {
Locale mLocale = new Locale("fr");
Locale.setDefault(mLocale);
Configuration config = getBaseContext().getResources().getConfiguration();
if (!config.locale.equals(mLocale)) {
config.locale = mLocale;
getBaseContext().getResources().updateConfiguration(config, null);
}
finish();
Intent getOneIntent = new Intent(this, OneActivity.class);
startActivity(getOneIntent);
} else if(id==R.id.english){
Locale mLocale = new Locale("en");
Locale.setDefault(mLocale);
Configuration config = getBaseContext().getResources().getConfiguration();
if (!config.locale.equals(mLocale)) {
config.locale = mLocale;
getBaseContext().getResources().updateConfiguration(config, null);
}
finish();
Intent getOneIntent= new Intent(this, OneActivity.class);
startActivity(getOneIntent);
}
return super.onOptionsItemSelected(item);
}
答案 0 :(得分:2)
我遇到了同样的问题。在更改Locale语言后,我可以使用setTitle(getResources.getString(R.string.my_title))
“修复”此问题。如果您实现Fragment,我应该用getActivity().setTitle()
调用它。另外,我用下一个方法清理任务:
public static void appRestart(Activity activity) {
Intent i = new Intent(activity.getBaseContext(), MyClass.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
activity.startActivity(i);
}
我希望它有所帮助...