如何在Android fragment中声明菜单?我之前使用的方法现在已弃用。
- 原文:**
override fun onCreateView(...): View {
setHasOptionsMenu(true)
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
super.onCreateOptionsMenu(menu, inflater)
this.menu = menu
inflater.inflate(R.menu.menu, this.menu)
}
7条答案
按热度按时间gywdnpxw1#
根据开发人员文档,这可以通过以下方式实现:
片段集有选项菜单已弃用,请使用集有选项菜单
kx5bkwkv2#
扩展@joseph-wambura和@hammad-zafar-bawara所说的内容,您还可以实现片段中的接口...
zmeyuzjn3#
在Kotlin中,
Activity
、Fragment
和PreferenceFragmentCompat
的声明活动
碎片
首选项片段兼容
使用菜单提供程序接口
lf3rwulv4#
JAVA代码
活动中的选项菜单
片段中的选项菜单
vybvopom5#
如果您使用的是Jetpack NavigationUI,则需要
setSupportActionBar(toolbar)
,否则菜单将不显示。m0rkklqb6#
这对onCreateView方法有帮助:
dtcbnfnu7#
我不知道为什么所有的答案都建议将
Lifecycle.State.RESUME
作为生命周期状态传递给addMenuProvider
调用,这会使菜单在片段暂停时消失,这在片段暂停但仍然可见时看起来不太好。例如,点击菜单项后显示对话框将使菜单消失。当对话框关闭时,菜单将重新显示。
在大多数情况下,传入的更好的生命周期状态是
Lifecycle.State.CREATE
,它只会在视图被销毁时删除菜单,这也是默认行为,所以您可以简单地忽略生命周期状态。