zoukankan      html  css  js  c++  java
  • Android开发 关于navigation destination xxx is unknown to this NavController 报错的复现分析与解决

    问题描述

      在我们使用按键点击触发  Navigation.findNavController(getView()).navigate(R.id.action_aFragment_to_bFragment);  代码跳转到另一个碎片时,在很低的概率下会出现这个 navigation destination xxx is unknown to this NavController 报错问题。这个问题的意思是在启动Fragment的时候,它需要启动的Fragment不存在。

    问题原因

      原因很简单,你没有在在点击里做防止连点的机制。 特别是设备在很卡的情况下。 连点会导致多次跳转Fragment,而Navigation启动的Fragment只有一个实例,而连点导致极端短时间内同时启动Fragment,会一些点击并没有Fragment来启动。

    复现问题

      你可能会不相信我上面的问题原因说明,因为一般设备在正常的情况下你很难触发这个bug。只有在设备很卡的时候才会出现,我们为了复现这个问题只需要下面这条命令创建一个设备很卡的环境:

    adb shell dd if=/dev/zero of=/storage/sdcard0/file bs=1073741824 count=10

    这个命令会让设备生成一个占用文件,让设备剩余空间被占满。注意,并不是真正使用了存储空间。然后你只需要在启动Navigation.findNavController(getView()).navigate() 的按键里连点多次就可以触发这个报错了

    解决问题办法

    做一个防止连点的机制即可,参考我的博客:https://www.cnblogs.com/guanxinjing/p/10905850.html

  • 相关阅读:
    SpreadJS 复制行
    RookeyFrame 模块 线上创建的模块 迁移到 线下来
    RookeyFrame 附件 上传附件
    RookeyFrame 字典 新增和绑定
    RookeyFrame Bug 表单管理 -> 查看表单 ->编辑字段页面 JS报错
    Catalan数
    美元汇率
    5倍经验日
    二分查找的边界问题
    线段覆盖5
  • 原文地址:https://www.cnblogs.com/guanxinjing/p/12146253.html
Copyright © 2011-2022 走看看