You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Navigation至2.4.1后动态功能模块导航崩溃求助

问题描述

应用采用Dynamic Feature Module架构,将Navigation组件依赖从2.3.0版本升级至2.4.1版本:

原依赖:

//Navigation Component
const val ANDROIDX_NAVIGATION_UI = "androidx.navigation:navigation-ui:2.3.0"
const val ANDROIDX_NAVIGATION_UI_KTX = "androidx.navigation:navigation-ui-ktx:2.3.0"
const val ANDROIDX_NAVIGATION_FRAGMENT = "androidx.navigation:navigation-fragment:2.3.0"
const val ANDROIDX_NAVIGATION_FRAGMENT_KTX = "androidx.navigation:navigation-fragment-ktx:2.3.0"
const val ANDROIDX_NAVIGATION_DYNAMIC_FEATURE = "androidx.navigation:navigation-dynamic-features-fragment:2.3.0"

升级后依赖:

const val ANDROIDX_NAVIGATION_UI = "androidx.navigation:navigation-ui:2.4.1"
const val ANDROIDX_NAVIGATION_UI_KTX = "androidx.navigation:navigation-ui-ktx:2.4.1"
const val ANDROIDX_NAVIGATION_FRAGMENT = "androidx.navigation:navigation-fragment:2.4.1"
const val ANDROIDX_NAVIGATION_FRAGMENT_KTX = "androidx.navigation:navigation-fragment-ktx:2.4.1"
const val ANDROIDX_NAVIGATION_DYNAMIC_FEATURE = "androidx.navigation:navigation-dynamic-features-fragment:2.4.1"

升级后,导航至其他Dynamic Feature Module中的Fragment时应用崩溃,报错信息:

java.lang.IllegalArgumentException: No destination with ID -2046558191 is on the NavController's back stack. The current destination is Destination(-2097020893) label=CartNavigationFragment class=com.myapp.CartNavigationFragment
解决方案
  • 验证导航目标是否已加载
    Navigation 2.4.x对动态模块导航图的加载机制做了调整,需确保目标Fragment所在的动态模块已完成加载,且导航图已合并到主导航图中。可在导航前通过NavController.graph.findDestination(targetDestId)检查目标ID是否存在,若不存在则等待模块加载完成后再执行导航。

  • 调整NavController的获取时机
    避免在Fragment生命周期早期(如onCreateView)直接调用findNavController()执行导航,改用view.post { ... }延迟执行,或先确认NavController.currentDestination与预期一致后再跳转。

  • 统一所有模块的Navigation版本
    检查主模块和所有动态模块的build.gradle,确保所有Navigation相关依赖的版本完全一致,不存在版本差异。同时确认动态模块已正确引入navigation-dynamic-features-fragment依赖。

  • 检查导航栈操作参数
    若导航时使用了popUpTo或popUpToInclusive参数,核对目标ID是否正确对应导航栈中的有效目的地。2.4.x版本对导航栈的校验更严格,错误的popUpTo目标会触发该异常。

  • 升级到修复版本
    Navigation 2.4.1存在部分动态模块导航的已知bug,可尝试升级至2.4.2及以上版本,该版本修复了动态模块导航图合并的相关问题。若仍有问题,可临时降级回2.3.0版本排查。

内容的提问来源于stack exchange,提问作者Sammy Freeman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 10:32:27