如何在工具栏中为不同的片段设置不同的菜单?

时间:2015-10-13 14:24:30

标签: android android-fragments android-menu

我有一个项目使用了我使用this教程创建的抽屉和滑动选项卡。我正在使用支持库使Material Design可用于较旧的Android版本。我也使用ToolBar代替ActionBar。我有一个附在该ToolBar上的菜单:

    toolbar = (android.support.v7.widget.Toolbar) findViewById(R.id.toolbar);
    toolbar.inflateMenu(R.menu.menu_main);

我正在努力的是为每个片段提供特定的菜单。我尝试了许多其他类似问题的答案,例如thisthis无效。大多数人建议these methods的实施,但它们似乎只适用于ActionBar,在我的情况下,我有android.support.v7.widget.Toolbar

我也尝试过使用

toolbar.getMenu().findItem(R.id.menuitem).setVisible(false);
supportInvalidateOptionsMenu();

但它也行不通。在这种情况下,我的菜单就会消失。

我一直在寻找和挣扎这几个星期来利用。我做错了吗?

如何为每个片段设置特定菜单?我认为隐藏菜单项可能是实现这一目标的更容易的选择,但如果你们有任何其他方式来实现这一点,我将不胜感激。

1 个答案:

答案 0 :(得分:2)

您应该在设置工具栏(可能在onCreate中)时调用setSupportActionBar(工具栏)并像往常一样在onCreateOptionsMenu(菜单菜单)方法中对菜单进行充气。 在这种方法中,您可以处理不同的菜单,无论是隐藏项目还是仅根据片段膨胀不同的菜单。

然后,如你所说,调用supportInvalidateOptionsMenu();当您在片段之间切换以重新创建菜单时。