我正面临着一个相当奇怪的碰撞错误:
Fatal Exception: java.lang.IllegalArgumentException: Navigation action/destination packageName.smart.view:id/action_nav_home_to_nav_screen_mirroring
cannot be found from the current destination Destination(packageName.smart.view:id/nav_screen_mirroring)
label=nav_screen_mirroring class=packageName.presentation.mirroring.MirroringFragment当快速单击导航到新片段时,会发生此错误。撞车率虽然很小,但还是会发生。但是我找到了一个解决方案,它需要在调用findNavController().navigate之前检查目标Id,如下所示:
if (fragment.findNavController().currentDestination?.id == R.id.nav_home) {
val action = HomeFragmentDirections.actionNavHomeToPhotoFragment()
findNavController().navigate(action)
}但问题是,我在项目中使用了许多导航,而且我不希望每次调用findNavController().navigate时都必须检查目的地。
有什么更好的方法来解决这个问题和避免崩溃吗?
发布于 2022-10-11 08:35:07
fun View.clickWithDebounce(debounceTime: Long = 1000L, action: (View) -> Unit) {
this.setOnClickListener(object : View.OnClickListener {
private var lastClickTime: Long = 0
override fun onClick(v: View) {
if (SystemClock.elapsedRealtime() - lastClickTime < debounceTime) {
return
} else {
action(v)
}
lastClickTime = SystemClock.elapsedRealtime()
}
})
}在商业项目中,我们总是使用这个扩展来导航。
发布于 2022-10-11 08:20:42
如果导航总是在单击之后发生,那么只点击一次视图怎么样?
https://stackoverflow.com/questions/74024880
复制相似问题