android 无法在片段中为菜单使用MenuProvider

uemypmqf  于 2023-01-19  发布在  Android
关注(0)|答案(1)|浏览(219)
class FirstFragment : Fragment(), MenuProvider {
    ...
    override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
    //not called 
        menuInflater.inflate(R.menu.menu_, menu)
    } 
    override fun onMenuItemSelected(menuItem: MenuItem): Boolean {

        return true
    }
}
<com.google.android.material.navigation.NavigationView
        android:id="@+id/nv"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:menu="@menu/menu_"/>

我尝试在片段中添加一个菜单(不是操作栏),即使我用XML添加它,我也无法在代码中访问它。我在互联网上尝试了很多方法,我在oncreate中添加了menuhost,我更新了模块的版本,但它不起作用,我需要知道什么?
我还尝试了此代码,未收到错误,但未调用函数

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {  
        
        val menuHost: MenuHost = requireActivity() as MenuHost

        menuHost.addMenuProvider(object : MenuProvider {
            override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) { 
        //not called
                menuInflater.inflate(R.menu.menu_, menu)
            }

            override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
            }
}, viewLifecycleOwner, Lifecycle.State.RESUMED)
0md85ypi

0md85ypi1#

我解决了我看到这个代码视频:

activity?.addMenuProvider(this)

我添加了OnViewCreaded,它起作用了

相关问题