我想更改选项菜单的语言。此代码适用于我的所有活动除外菜单。
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.ingles:
mLocale = new Locale("en");
Locale.setDefault(mLocale);
config = getBaseContext().getResources().getConfiguration();
if (!config.locale.equals(mLocale)) {
config.locale = mLocale;
getBaseContext().getResources().updateConfiguration(config, null);
}
setContentView(R.layout.main);
break;
case R.id.euskera:
mLocale = new Locale("eu");
Locale.setDefault(mLocale);
config = getBaseContext().getResources().getConfiguration();
if (!config.locale.equals(mLocale)) {
config.locale = mLocale;
getBaseContext().getResources().updateConfiguration(config, null);
}
setContentView(R.layout.main);
break;
}
return super.onOptionsItemSelected(item);
}
为什么呢?我尝试使用onPrepareOptionsMenu,但它创建了额外的菜单
public boolean onPrepareOptionsMenu(Menu menu) {
if(config.equals(this.getBaseContext().getResources().getConfiguration())){
MenuInflater inflater = this.getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
return false;
}
答案 0 :(得分:0)
最好将菜单标题字符串放在值string.xml
中,然后从那里设置menu.xml
喜欢
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/new_game"
android:title="@string/new_game"
/>
</menu>
如果您想在运行时更改它,请参阅此