我想更改选项菜单的语言。此代码适用于我的所有活动,菜单除外。
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;
}