我正在创建一个菜单,在其中一个项目中用于锁定对象。当点击此项时,应重新创建菜单,并添加一个按钮以解锁该项目。我为此创建了两个菜单。这很好地工作着。我读到Android版本>=11的情况下,显示菜单时将不再调用onPrepareOptionsMenu方法,而我必须调用invalidateOptionsMenu()方法。所以我更改了构建目标(在清单文件和属性中都更改了)到11,并在4.0.3的AVD上运行了应用程序。程序仍然正常工作,但我认为它不应该,所以我需要检查。
if (Build.VERSION.SDK_INT >= 11)
{
invalidateOptionsMenu();
}
这是我的代码:
public class MainActivity3 extends Activity{
boolean locked;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
locked = false;
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.changing_menu1, menu);
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
menu.clear();
MenuInflater inflater = getMenuInflater();
if (locked) {
inflater.inflate(R.menu.changing_menu2, menu);
}
else {
inflater.inflate(R.menu.changing_menu1, menu);
}
return super.onPrepareOptionsMenu(menu);
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.Menu1:
break;
case R.id.Menu2 :
break;
case R.id.Menu3 :
locked = !locked;
break;
}
return true;
}
}
所以,在4.0中,菜单仍然会被刷新/重新创建。 我是否对invalidateOptionsMenu()的使用有误解?