带有NAV组件的嵌套片段中的optionsMenu



我正在使用导航架构组件 和嵌套片段(我的应用程序和共享工具栏中只有1个活动)。在片段中我做:

override fun onActivityCreated(savedInstanceState: Bundle?) {
    super.onActivityCreated(savedInstanceState)
    setHasOptionsMenu(true)
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
    super.onCreateOptionsMenu(menu, inflater)
    inflater.inflate(R.menu.scan_menu, menu)
}

然后,我使用这样的东西显示了一个新的片段B:

findNavController().navigate(R.id.action_a_b)

它的导航部分工作正常,但是在显示片段B时在片段A中创建的菜单(实际上,从未清除)。这不是在Nav Arch组件中支持吗?我应该如何攻击这个?由于其中一个添加菜单,因此我不会通过手动清除所有其他片段来手动清除菜单来执行黑客攻击。

谢谢!

,由于似乎没有任何解决方案,我最终以对Menuitem进行引用,然后隐藏/显示:

private var menuItem: MenuItem? = null
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
    super.onCreateOptionsMenu(menu, inflater)
    inflater.inflate(R.menu.scan_menu, menu)
    menuItem = menu.findItem(R.id.scan_menu_manual)
}
override fun onResume() {
    super.onResume()
    menuItem?.isVisible = true
}
override fun onPause() {
    super.onPause()
    menuItem?.isVisible = false
}

似乎现在起作用。

最新更新