cambiar la visibilidad del elemento de menú cuando se hace clic

Estoy tratando de esconder unoMenuItem y hacer otra visible cuando se selecciona la primera.

Las identificaciones de cada uno son:

pencil: R.id.button_routines_edit
check mark: R.id.button_routines_edit_done

Aquí el código relevante:

  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;
  }

Mi problema es: el menú de opciones no vuelve a dibujar los elementos cuando se seleccionan. En otras palabras, el primero no está oculto y el segundo no se muestra.

Respuestas a la pregunta(2)

Su respuesta a la pregunta