如何从 onoptionsitemselected 访问所有菜单项

How to access all menu items from onoptionsitemselected

我有一个 Menu 附加到 Toolbar 和两个 MenuItems。它们也可以选中或取消选中。当我 select 项目“0”时,项目“1”应该未选中,反之亦然。但是我无法访问任何其他菜单项,除了 select 在 onOptionsItemSelected() 函数中编辑的菜单项。有什么方法可以访问 onCreateOptionsMenu() 以外的菜单项(来自 onCreate() 等)?

我尝试创建名为 "items_type" 的 public Menu 变量,并在 onCreateOptionsMenu() 中将现有的 "menu" 分配给它。没用... items_type.findItem() 仍然在 onCreateOptionsMenu.

之外给出 NullPointerException
public Menu items_type;

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.items_type, menu);
        this.items_type=menu;
        return true;
    }

public boolean onOptionsItemSelected(MenuItem item)
{
items_type.findItem(R.id.<id_here>) // nullpointerexception error, that only works inside onCreateOptionsMenu and nowhere else. Any ideas?
}
public boolean onOptionsItemSelected (MenueItem item){
       switch (item.getItemId()){
             case R.id.item1:
                //Do whatever you want to do when user clicks item1
                break;
             case R.id.item2:
                //Do whatever you want to do when user clicks item2
                break;
       }
       return true;
}

您可以使用 item.getItemId() 获取项目 ID,然后您可以执行任何您想做的事情。

你可以试试这个方法:

 private boolean isChecked = false;

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
         MenuItem checkable = menu.findItem(R.id.menu_switch_full_original);
         checkable.setChecked(isChecked);
         return true;
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // TODO Auto-generated method stub
        getMenuInflater().inflate(R.menu.a, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // TODO Auto-generated method stub
        switch (item.getItemId()) {
        case R.id.menu_switch_full_original:
            isChecked = !item.isChecked();
            item.setChecked(isChecked);
            // your other functionality
            break;

        default:
            break;
        }
        return super.onOptionsItemSelected(item);
    }