如何暂时隐藏工具栏菜单

How to temporarily hide toolbar menu

我有主机 activity,它可以有不同的片段,它是某种 SingleFragmentActivity,因此用户可以在此 activity 内的不同片段之间导航,但在我的菜单中我有将用户带到另一个片段的按钮,所以我需要在片段被替换时隐藏菜单,并在用户返回上一个片段时恢复它。
我试过清除菜单,它有效,但我怎样才能恢复菜单而不是以前的片段?

在代码中这看起来像

   public void onAttach(Activity activity) {
        super.onAttach(activity);
        try {
            mToolbarProvider = (ToolbarProvider) activity;
          //  mToolbarProvider.saveCurrentMenu();
            mToolbarProvider.getToolbar().getMenu().clear();

        }
        catch (ClassCastException ex) {
            Log.e(getString(R.string.error_tag), "Activty has to implement " + ToolbarProvider.class.getSimpleName() + " interface");
        }
    } 

这个工作,但是当我再次回到需要菜单的片段时,我该如何恢复菜单,我试图保存菜单对象,但对我不起作用。

   @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        try {
            mActivityController = (ActivityController) activity;
            mToolbarProvider = (ToolbarProvider) activity;
           /* Menu lastMenu = mToolbarProvider.restoreLastMenu();
            if(lastMenu!=null) {
                activity.onCreateOptionsMenu(lastMenu);
            }*/
            Menu toolBarMenu = mToolbarProvider.restoreLastMenu();
            if(toolBarMenu!=null) {
                mToolbarProvider.getToolbar().inflateMenu(R.menu.menu_main);
            }

        } catch (ClassCastException ex) {
            Log.e(getString(R.string.error_tag), "Activty has to implement " + ActivityController.class.getSimpleName() + " interface");
        }
    }

最好是隐藏起来,需要的时候再显示。
请帮助实现这一点。

编辑

按照下面的建议,我试过这样做,但第一次没有用,但我已经将逻辑移到 onCreateView 中,我真的忘记了我在 [=16= 中做所有事情], 只调用一次。真是愚蠢的错误。

所以现在一切都很顺利。
这是代码。
onCreateView() 我需要隐藏菜单的片段中。

  Menu menu = mToolbarProvider.getToolbar().getMenu();
        MenuItem menuItem = menu.findItem(R.id.action_settings);
        if(menuItem!=null) {
            menuItem.setVisible(false);
            mToolbarProvider.addHiddenItem(menuItem);
        }

并且在所有菜单项都可见的主片段中。

List<MenuItem> hiddenItemsList = mToolbarProvider.getAllHiddenItems();
    if(hiddenItemsList!=null && hiddenItemsList.size()>0) {
        int size = hiddenItemsList.size();
        for(int i=0;i<size;i++) {
            hiddenItemsList.get(i).setVisible(true);
        }
    }

或者你创建类似 setAllItemsVisible()

的方法

您可以尝试使用 menuItem.setVisible(false); 隐藏菜单项并再次显示它们 menuItem.setVisible(true);