我有一个活动,主机几个片段。
一旦第一个片段到达Activity,它就会在Activity的AppBar布局上膨胀一些菜单(实际上只是一个操作按钮):
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
super.onCreateOptionsMenu(menu, inflater)
inflater.inflate(R.menu.menu_info, menu)
}
字符串
一旦用户被导航到同一个Activity中的第二个片段,这个动作按钮应该被隐藏。我不能做到这一点(见下面我的解决方案)。
所以,一般来说,问题是:
如何仅对回栈中的部分片段在Activity AppBarLayout中隐藏菜单?
注意:我不需要隐藏整个图标(标题仍然应该显示,我只想隐藏操作按钮!)
我尝试了不同的解决方案,不幸的是不工作:
1.在第二个片段中调用setHasOptionsMenu(false)(在onCreate和onViewView中都尝试过)
1.在片段的不同回调中调用activity.invalidateOptionsMenu(),然后尝试隐藏onvalidateOptionsMenu中的menu元素,该元素在invalidate调用后应该再次调用。但我看到它甚至在invalidate调用后也没有被调用:
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
menu.forEach {
it.isVisible = false
}
}
型
也试图将所有这些解决方案合并,但它不起作用-按钮仍然显示在第二个片段。
1条答案
按热度按时间ukqbszuj1#
oncodeOptionsMenu已被弃用。您应该改用MenuProvider API。
在你的第一个片段或者你想要显示特定菜单的片段上:
字符串