在View Pager的一个片段中显示菜单

时间:2016-01-13 21:07:06

标签: android android-fragments

我正在使用包含3个片段的Viewpager。我想只在其中一个片段中显示菜单。

1,我不知道为什么toolbar.inflateMenu不起作用。

2,菜单有效,如果我有onPrepareOptionsMenu方法并且

getMenuInflater().inflate(R.menu.add_user, menu);但菜单显示在所有片段中。

所以,根据堆栈溢出中的其他问题,我实现了下面的代码,但它没有显示菜单,它进入方法但菜单没有显示。

override fun onPrepareOptionsMenu(menu: Menu?): Boolean {
    //getMenuInflater().inflate(R.menu.add_user, menu);
    info("Menu=>${tabs_viewpager.currentItem}")
    val menuItem = menu?.findItem(R.id.addUserMenu)
    menuItem?.setVisible(tabs_viewpager.currentItem == 1)
    return true
}

控件来到此方法并显示currentItem。但它不显示菜单。菜单有id。有人可以指导我,我可以纠正这项工作吗?

1 个答案:

答案 0 :(得分:1)

尝试调用setHasOptionsMenu(true);在您希望菜单显示的片段的oncreate()中(您可以在不希望菜单显示的片段中将其设置为false)。

还包括:

@Override
public void onPrepareOptionsMenu(Menu menu) {
    super.onPrepareOptionsMenu(menu);
    // your code
}

在要设置/更改菜单的片段中。在菜单显示之前每次都会调用它。

您也可以致电invalidateOptionsMenu()supportInvalidateOptionsMenu()(如果您使用支持库)来强制onPrepareOptionsMenu(menu)被调用。

您可能需要查看this menus tutorial

祝你好运

克莱夫