使用新的 MenuProvider API 时,片段中的
requireActivity().invalidateOptionsMenu()
相当于什么?
当我在运行时获得一些新信息时,我需要刷新片段中的菜单。
class MyFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
//... Rest of code not shown
requireActivity.addMenuProvider(myMenuProvider, viewLifecycleOwner, Lifecycle.State.RESUMED)
}
}
// ... Rest of code not shown
fun onDataChanged() {
//.. How do I refresh my menu using the `myMenuProvider` or the `MenuHost`?
}
}
您用来调用 MenuHost
的
addMenuProvider
API 有另一种方法:invalidateMenu()
:
使菜单无效,以确保显示的内容与菜单的当前内部状态匹配。每当菜单状态发生更改时都应该调用此函数,例如根据某些用户事件删除或禁用项目。
所以你会打电话给
requireActivity().invalidateMenu()
。