如何在工具栏android中单击禁用的选项菜单项?

时间:2016-02-14 10:37:01

标签: android menu toolbar

我在工具栏中有两个选项。单击一个项目时,将启用该项目。然后必须禁用另一个项目。但是,一旦项目被禁用,我就不能再点击该项目上的点击事件了。无论如何我可以点击禁用项目吗?

谢谢

enter image description here

我确实喜欢这个,但它不再起作用了

 MenuItem tureMenuItem;
 MenuItem dingMenuItem

 @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);
    menu.clear();
   getActivity().getMenuInflater().inflate(R.menu.lore_fragment, menu);
   tureMenuItem = menu.findItem(R.id.menu_ture);
   dingMenuItem = menu.findItem(R.id.menu_ding);
   tureMenuItem.setEnabled(true);
   dingMenuItem.setEnabled(false);


}


@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.menu_ding:
            tureMenuItem.setEnabled(true);
            dingMenuItem.setEnabled(false);
            break;
        case R.id.menu_ture:
            tureMenuItem.setEnabled(false);
            dingMenuItem.setEnabled(true);
            break;
    }
    return super.onOptionsItemSelected(item);
}

2 个答案:

答案 0 :(得分:1)

使用setEnabled()将起作用。管理你的条件。

您必须正确对这些菜单项执行某些操作。你可以在行动结束时启用其他项目。因为你还没有发布我只有选项。使用Handler.PostDelayed。

 boolean isMenuEnabled;
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
            if(item.getItemId()==R.id.action_settings) {

                    this.isMenuEnabled = true;

                    tureMenuItem.setEnabled(true);
                    dingMenuItem.setEnabled(false);
             handler.postDelayed(runnable,1000);
                    return true;
            }
            else if(item.getItemId()== R.id.action_settings1) {

                this.isMenuEnabled = true;

                tureMenuItem.setEnabled(false);
                dingMenuItem.setEnabled(true);
                handler.postDelayed(runnable,1000);
                return true;
            }



        return super.onOptionsItemSelected(item);
    }

删除回调

@Override
    protected void onDestroy() {

        handler.removeCallbacks(runnable);
        super.onDestroy();
    }

延迟运行

Runnable runnable = new Runnable() {
        @Override
        public void run() {
            if(isMenuEnabled){
                tureMenuItem.setEnabled(true);
                dingMenuItem.setEnabled(true);
                isMenuEnabled=false;
            }

        }
    };

答案 1 :(得分:0)

您需要检查以下示例代码到disableenable菜单项,反之亦然。

   @Override
   public boolean onPrepareOptionsMenu(Menu menu) 
   {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.my_menu, menu);      
     if(menu.getItem(0))
        {
        menu.getItem(0).setEnable(false);
        menu.getItem(1).setEnable(true); 
        }
     else if(menu.getItem(1))
       {
        menu.getItem(1).setEnable(false);
        menu.getItem(0).setEnable(true); 
       }        

    return super.onPrepareOptionsMenu(menu);
  }