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

How can I have different menus in a Toolbar for different fragments?

我有一个使用 this 教程创建的抽屉和滑动选项卡的项目。我正在使用支持库使 Material Design 可用于旧的 android 版本。我还使用 ToolBar 而不是 ActionBar。我有一个附加到该工具栏的菜单:

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

我遇到的困难是为每个片段设置特定的菜单。我尝试了很多其他类似问题的答案,比如 this and this to no avail. Most people are suggesting the implementation of these methods,但它们似乎只适用于 ActionBar,而在我的例子中,我有一个 android.support.v7.widget.Toolbar

我也试过使用

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

但是还是不行。在这种情况下,我的菜单就消失了。

我已经搜索并为此苦苦挣扎了数周,以求得益。我做错了什么吗?

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

您应该在设置工具栏(可能在 onCreate 中)时调用 setSupportActionBar(toolbar) 并像往常一样在 onCreateOptionsMenu(Menu menu) 方法中扩展菜单。 在这种方法中,您可以处理不同的菜单,无论是通过隐藏项目还是仅仅根据片段展开不同的菜单。

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