NoteListActivity类: public void supportInvalidateOptionsMenu() { invalidateOptionsMenu(); // 最终调用 Activity 的原生方法 } if(secret_mode == 1) menu.findItem(R.id.menu_secret).setVisible(false); else menu.findItem(R.id.menu_quit_secret).setVisible(false); return true; } case R.id.menu_secret: { // 进入私密模式 secret_mode = 1; // 先临时设为1(用于对话框标题提示) AlertDialog.Builder dialog = new AlertDialog.Builder(NotesListActivity.this); dialog.setTitle("重要提醒") .setMessage("您确认进入私密模式吗?") .setCancelable(false) .setPositiveButton("确认", (d, which) -> { startAsyncNotesListQuery(); Toast.makeText(NotesListActivity.this, "您已进入私密模式", Toast.LENGTH_SHORT).show(); }) .setNegativeButton("取消", (d, which) -> { secret_mode = 0; // 恢复状态 supportInvalidateOptionsMenu(); // 强制刷新菜单 }) .show(); break; } case R.id.menu_quit_secret: { // 退出私密模式 AlertDialog.Builder dialog = new AlertDialog.Builder(NotesListActivity.this); dialog.setTitle("重要提醒") .setMessage("您确认退出私密模式吗?") .setCancelable(false) .setPositiveButton("确认", (d, which) -> { secret_mode = 0; startAsyncNotesListQuery(); supportInvalidateOptionsMenu(); // 刷新菜单 Toast.makeText(NotesListActivity.this, "您已退出私密模式", Toast.LENGTH_SHORT).show(); }) .setNegativeButton("取消", null) // 无需操作 .show(); break; } ShareActionProvider: @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.note_list, menu); MenuItem enterSecret = menu.findItem(R.id.menu_secret); MenuItem quitSecret = menu.findItem(R.id.menu_quit_secret); enterSecret.setVisible(secret_mode == 0); // 非私密模式时显示"进入" quitSecret.setVisible(secret_mode == 1); // 私密模式时显示"退出" return true; }