Android 如何临时隐藏工具栏菜单

Android 如何临时隐藏工具栏菜单,android,android-fragments,android-actionbar,toolbar,Android,Android Fragments,Android Actionbar,Toolbar,我有一个主机活动,它可以有不同的片段,它是某种单片段活动,因此用户在这个活动中的不同片段之间导航,但在我的菜单中,我有一个按钮,可以将用户带到另一个片段,所以我需要在片段被替换时隐藏菜单,并在用户返回到上一个片段时恢复菜单。 我已经尝试过清除菜单,它是有效的,但我如何才能恢复菜单比以前的片段 在代码中,这看起来像 public void onAttach(Activity activity) { super.onAttach(activity); try {

我有一个主机活动,它可以有不同的片段,它是某种
单片段活动
,因此用户在这个活动中的不同片段之间导航,但在我的菜单中,我有一个按钮,可以将用户带到另一个片段,所以我需要在片段被替换时隐藏菜单,并在用户返回到上一个片段时恢复菜单。
我已经尝试过清除菜单,它是有效的,但我如何才能恢复菜单比以前的片段

在代码中,这看起来像

   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
,我真的忘记了我在
onAttach
中做的所有事情,只调用了一次。真是愚蠢的错误

所以现在一切都像一个符咒一样运行。
这是代码。
在我需要隐藏菜单的片段中的
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);
        }
    }
List hiddenItemsList=mToolbarProvider.getAllHiddenItems();
if(hiddenItemsList!=null&&hiddenItemsList.size()>0){
int size=hiddenItemsList.size();

对于(int i=0;i您可以尝试使用
menuItem.setVisible(false);
隐藏菜单项并再次显示
menuItem.setVisible(true);

您可以尝试使用
menuItem.setVisible(false);
隐藏菜单项并再次显示
menuItem.setVisible(true);
很好!!请将您的评论作为答案发布!!