Android Fragments 抽屉菜单被片段菜单阻止

5us2dqdw  于 11个月前  发布在  Android
关注(0)|答案(1)|浏览(113)

所以,我有一个正在使用抽屉菜单和一些片段的应用程序.但是,当片段我在一个片段,有一个菜单,它完全阻止了我的抽屉菜单,即使汉堡图标仍然可见.


的数据
但是,当我按下返回按钮并退出当前Fragment时,抽屉式菜单再次工作。似乎fragment中的菜单阻止了抽屉式菜单。下面是我将菜单提供程序添加到fragment中的代码:

val menuHost: MenuHost = requireActivity()
    menuHost.addMenuProvider(
        this,
        viewLifecycleOwner,
        Lifecycle.State.RESUMED
    )

字符串
下面是我的菜单膨胀代码:

menuInflater.inflate(R.menu.main_menu, menu)
    val myActionMenuItem = menu.findItem(R.id.btn_search_menu)
    val searchView = myActionMenuItem.actionView as SearchView?
    searchView?.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
        override fun onQueryTextSubmit(query: String?): Boolean {
            (context?.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager)
                .hideSoftInputFromWindow(view?.windowToken, 0)

            return true
        }

        override fun onQueryTextChange(newText: String?): Boolean = false
    })

ztyzrc3y

ztyzrc3y1#

我刚刚找到了正确的答案,如果你想让AppBarConfiguration再次处理导航点击,你需要在onMenuItemSelected中返回false。这是说我们现在把菜单点击事件的处理传递回Jetpack组件。

activity?.addMenuProvider(object : MenuProvider {

        override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
            // Do your inflation here
        }

        override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
            R.id.action -> {
               // Do your stuff here
               return true // Click event is now your responsibility
            }
            else -> false // Click event responsibility back to Android
        }

    })

字符串
在Activity中,没有任何变化,您仍然需要像这样覆盖onSupportNavigateUp

override fun onSupportNavigateUp(): Boolean {
    return navigateUp(navController, appBarConfiguration) || super.onSupportNavigateUp()
}

相关问题