必须手动清除每个片段上的选项菜单

问题描述 投票:0回答:1

我在某些片段上有选项菜单,但是这里的情况是最后打开的选项菜单一直出现在没有任何选项菜单的片段中,如果下一个片段中有一个选项菜单,则最后打开的选项菜单项和当前片段选项菜单项显示在当前片段中。

我目前有的解决方案是

// in fragments that have options menu
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
        menu.clear()
        inflater.inflate(R.menu.menu_options, menu)
}

// in fragment where there is no options menu
override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setHasOptionsMenu(true)
}

override fun onPrepareOptionsMenu(menu: Menu) {
        menu.clear()
}

我什至尝试在具有选项菜单的片段中进行跟踪,但不起作用

 override fun onOptionsMenuClosed(menu: Menu) {
        menu.clear()
 }

必须在每个没有选项菜单的片段上覆盖onCreateonPrepareOptionsMenu并不是一个好的解决方案。我有很多片段(我将单个活动模式与导航体系结构组件一起使用)。 我如何更好地解决此问题?

android android-menu android-architecture-navigation
1个回答
1
投票
您可以创建一个BaseFragment类,并在其中覆盖您的onCreate()。因此,您可以使用YourFragment扩展每个BaseFragment

此外,您还需要在invalidateOptionsMenu()中呼叫onCreate()

这里是文档的link

© www.soinside.com 2019 - 2024. All rights reserved.