我正在使用包含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。有人可以指导我,我可以纠正这项工作吗?
答案 0 :(得分:1)
尝试调用setHasOptionsMenu(true);在您希望菜单显示的片段的oncreate()中(您可以在不希望菜单显示的片段中将其设置为false)。
还包括:
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
// your code
}
在要设置/更改菜单的片段中。在菜单显示之前每次都会调用它。
您也可以致电invalidateOptionsMenu()
或supportInvalidateOptionsMenu()
(如果您使用支持库)来强制onPrepareOptionsMenu(menu)
被调用。
您可能需要查看this menus tutorial
祝你好运克莱夫