首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Android中找不到导航组件错误操作

在Android中找不到导航组件错误操作
EN

Stack Overflow用户
提问于 2022-10-11 08:05:55
回答 2查看 23关注 0票数 1

我正面临着一个相当奇怪的碰撞错误:

代码语言:javascript
复制
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,如下所示:

代码语言:javascript
复制
if (fragment.findNavController().currentDestination?.id == R.id.nav_home) {
   val action = HomeFragmentDirections.actionNavHomeToPhotoFragment()
   findNavController().navigate(action)
}

但问题是,我在项目中使用了许多导航,而且我不希望每次调用findNavController().navigate时都必须检查目的地。

有什么更好的方法来解决这个问题和避免崩溃吗?

EN

回答 2

Stack Overflow用户

发布于 2022-10-11 08:35:07

代码语言:javascript
复制
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()
        }
    })
}

在商业项目中,我们总是使用这个扩展来导航。

票数 1
EN

Stack Overflow用户

发布于 2022-10-11 08:20:42

如果导航总是在单击之后发生,那么只点击一次视图怎么样?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74024880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档