gpt4 book ai didi

android - 仅当单击底部菜单项并且仍使用 setupWithNavController 时,我们如何处理底部菜单导航项单击?

转载 作者:行者123 更新时间:2023-12-04 23:54:07 26 4
gpt4 key购买 nike

我们如何仅在单击底部菜单项并且仍使用 setupWithNavController 时跟踪底部菜单导航项的单击?
目前使用底部导航 View 2.4.0-alpha05,我们有一个用于跟踪底部导航点击以进行分析的用例,底部导航设置如下

binding.bottomNavigationView.setupWithNavController(navController)
如果我在下面使用,那么底部导航选择将停止工作。
binding.bottomNavigationView.setOnItemSelectedListener { 
//track clicks
true
}
复制源代码的替代方法 NavigationUi.setupWithNavController并像下面一样进行更改,但是我不确定这是否会产生影响,例如,如果谷歌添加改进或稍后更改 setupWithNavController,那么项目将错过该更改:
    private fun setupWithNavController(
navigationBarView: NavigationBarView,
navController: NavController,
onItemSelected: ((Int) -> Unit)
) {
navigationBarView.setOnItemSelectedListener { item ->
onItemSelected.invoke(item.itemId)
NavigationUI.onNavDestinationSelected(
item,
navController
)
}
val weakReference = WeakReference(navigationBarView)
navController.addOnDestinationChangedListener(
object : NavController.OnDestinationChangedListener {
override fun onDestinationChanged(
controller: NavController,
destination: NavDestination,
arguments: Bundle?
) {
val view = weakReference.get()
if (view == null) {
navController.removeOnDestinationChangedListener(this)
return
}
view.menu.forEach { item ->
if (destination.matchDestination(item.itemId)) {
item.isChecked = true
}
}
}
})
}

最佳答案

您可以从 BottomNavigationView 获取 MenuItem:

bottomNavigationView?.menu?.findItem(R.id.your_menu_item_id) // by menu item id
或者
bottomNavigationView?.menu?.get(index) // by index
获得 MenuItem 后,您可以点击 MenuItem 进行订阅:
bottomNavigationView?.menu?.findItem(R.id.your_menu_item_id)?.setOnMenuItemClickListener {
// TODO: add your code
return@setOnMenuItemClickListener false
}
NavigationComponent 运行良好,您可以处理对 BottomNavigationView 项目的点击。

关于android - 仅当单击底部菜单项并且仍使用 setupWithNavController 时,我们如何处理底部菜单导航项单击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68635259/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com