我试图隐藏一个MenuItem
并在选择第一个时显示另一个{。
每个人的身份证号码是:
pencil: R.id.button_routines_edit
check mark: R.id.button_routines_edit_done
这里有相关代码:
private boolean isEditing = false;
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.button_routines_edit:
// hide pencil icon, show checkmark
isEditing = true;
return true;
case R.id.button_routines_edit_done:
// show pencil icon, done editing
isEditing = false;
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
// hide pencil when editing and show check mark
menu.findItem(R.id.button_routines_edit).setVisible(!isEditing);
menu.findItem(R.id.button_routines_edit_done).setVisible(isEditing);
return true;
}
我的问题是: 选项菜单在重新选择时不会重新绘制项目。换句话说,第一个没有隐藏,第二个没有显示。
答案 0 :(得分:5)
您需要做的就是致电invalidateOptionsMenu()
。
invalidateOptionsMenu()仅适用于API 11+,除非您使用的是ActionBarSherlock。
您遇到此问题是因为MenuItems
基本显示在ActionBar
中。如果将它们放在溢出菜单中,则无需拨打invalidateOptionsMenu()
。
答案 1 :(得分:-1)
试试这个,它必须隐藏菜单项
public boolean onCreateOptionsMenu(Menu menu){
menu.getItem(R.id.button_routines_edit).setVisible(!isEditing);
menu.getItem(R.id.button_routines_edit_done).setVisible(isEditing);
return true;
}