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

Jetpack Compose中AnimatedNavHost内超28个composable元素应用崩溃如何解决

问题根因

这个异常是旧版本Jetpack Navigation组件的已知内部缺陷,当单张导航图下的目的地节点数量超过28个时,内部存储节点的SparseArrayCompat扩容逻辑异常,触发数组越界。你当前的根导航图下已经有2个显式声明的页面+26个其他页面,合计28个,新增第29个就触发了这个问题。

解决思路

  • 方案1:升级依赖版本
    将Jetpack Navigation核心依赖升级到2.5.3及以上稳定版,同时将Accompanist动画导航依赖升级到与Navigation版本匹配的对应版本即可修复该内部缺陷。
  • 方案2:修正重复的route值
    排查所有composable声明中用到的route常量,如果存在重复的route值,修改为全局唯一即可。重复的route会导致节点索引计数异常,也会触发该越界问题。
  • 方案3:拆分嵌套导航图
    如果暂时不方便升级依赖,可以将业务关联性强的页面拆分为多个嵌套导航图,单张导航图内的节点数量控制在28个以内,即可规避该问题。嵌套导航图示例写法如下:
    AnimatedNavHost(
        navController = navController,
        startDestination = Constants.SPLASH,
        enterTransition = { initial, _ ->
            slideInHorizontally(initialOffsetX = { 1000 })
        },
        exitTransition = { _, target ->
            slideOutHorizontally(targetOffsetX = { -1000 })
        },
        popEnterTransition = { initial, _ ->
            slideInHorizontally(initialOffsetX = { -1000 })
        },
        popExitTransition = { _, target ->
            slideOutHorizontally(targetOffsetX = { 1000 })
        }
    ) {
        // 根导航图下只保留基础入口页面
        composable(Constants.SPLASH) {
            Splash(navController = navController)
        }
        composable(Constants.HIW) {
            LogoPage(
                false,
                true,
                navController = navController
            ) { HowItWorks(navController = navController, false) }
        }
        // 嵌套主业务导航图
        navigation(
            startDestination = Constants.MAIN_HOME,
            route = Constants.MAIN_GRAPH
        ) {
            // 原有的其他业务页面迁移到该子图内,单图节点数不超过28
            composable(Constants.MAIN_HOME) { HomePage(navController) }
            composable(Constants.MINE) { MinePage(navController) }
            // 其他业务页面
        }
        // 可按需新增其他嵌套子导航图
    }
    

内容的提问来源于stack exchange,提问作者Sparsh Dutta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:54:03