我试图隐藏一个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;
  }

我的问题是:
“选项”菜单在选定项时不会重新绘制这些项。换句话说,第一个没有隐藏,第二个没有显示。

最佳答案

你只需要打电话给invalidateOptionsMenu()
invalidateOptionsMenu()仅在API 11+中可用,除非您使用的是ActionBarSherlock
你有这个问题是因为你的MenuItems基本上显示在ActionBar中。如果将它们放在溢出菜单中,就不需要调用invalidateOptionsMenu()

10-07 22:18