如何暂时隐藏工具栏菜单

时间:2015-07-23 05:06:13

标签: android android-fragments android-actionbar toolbar

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

在代码中,这看起来像

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

所以现在一切都像魅力一样 这是代码。
在我的片段中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); } }

的方法

1 个答案:

答案 0 :(得分:3)

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