如何在片段中使用 MenuProvider 设置 NavigationUI?

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

我有一项与导航主机有关的活动,它使用 NavigationUI 处理导航。 在我的片段中,我有 optionsMenu 和 setHasOptionsMenu(true) 已被弃用,而是我使用 addMenuProvider 扩展了一个新菜单,但它破坏了我在 Appbar 中的后退按钮。我如何使用 NavigationUI 进行设置?

mainActivity.kt:

    setSupportActionBar(binding.toolbar)

    val navController = findNavController(R.id.nav_host_fragment_content_main)
    appBarConfiguration = AppBarConfiguration(navController.graph)
    setupActionBarWithNavController(navController, appBarConfiguration)

onSupportNavigateUp:

    override fun onSupportNavigateUp(): Boolean {
    val navController = findNavController(R.id.nav_host_fragment_content_main)
    return navController.navigateUp()
            || super.onSupportNavigateUp()
}

在片段中:

val menuHost: MenuHost = requireActivity()
   menuHost.addMenuProvider(object : MenuProvider {
        override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
            menuInflater.inflate(R.menu.addnote_menu, menu)
        }

        override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
            if(menuItem.itemId == R.id.done) {
                saveNoteComplete()
            }
            return true
        }

    }, viewLifecycleOwner, Lifecycle.State.RESUMED)

我尝试使用 NavigationUI.setupWithNavController() 但它没有将菜单作为参数。

android kotlin android-actionbar android-jetpack
© www.soinside.com 2019 - 2024. All rights reserved.