MenuProvider:相当于 invalidateOptionsMenu 的什么?

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

使用新的 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`?
    } 
}
android fragment android-menu android-view-invalidate
1个回答
0
投票

您用来调用 MenuHost

addMenuProvider
 API 有另一种方法:
invalidateMenu()
:

使菜单无效,以确保显示的内容与菜单的当前内部状态匹配。每当菜单状态发生更改时都应该调用此函数,例如根据某些用户事件删除或禁用项目。

所以你会打电话给

requireActivity().invalidateMenu()

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