我正试图隐藏一个MenuItem
并在选择第一个时使另一个可见。
每个 ID 为:
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;
}
我的问题是:
选项菜单不会在选择项目时重新绘制项目。换句话说,第一个不隐藏,第二个不显示。
您所需要做的就是致电invalidateOptionsMenu()
.
无效选项菜单()仅在 API 11+ 中可用,除非您使用动作栏夏洛克.
你遇到这个问题是因为你的MenuItems
都显示在ActionBar
, 基本上。如果将它们放在溢出菜单中,则无需调用invalidateOptionsMenu()
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)