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

Jetpack Compose多导航图同路由时NavController目标选择方案

如何让NavController优先导航到当前导航图内的同名路由?

场景与需求

应用使用单个NavHost和NavController,导航结构如下:

NavHost(initialRoute = "A"){
    navigation(route = "A", initialRoute = "A1") {
        composable(route = "A1") {...}
        composable(route = "A2") { // 导航图A下的A2
            ScreenA2()
        }
    }
    navigation(route = "B", initialRoute = "B1") {
        composable(route = "B1") {...}
        composable(route = "B2") {...}
        composable(route = "A2") { // 导航图B下的A2
            ScreenA2()
        }
    }
}

导航图“A”和“B”对应应用的两个标签页,切换标签页时通过导航到“A”或“B”路由,并保存恢复状态来维护各自独立的虚拟返回栈。需求是保留两个导航图中的“A2”路由,确保从每个导航图导航到A2时,各自维护独立的返回栈。

需要实现的行为:

  • 处于“B1”路由时导航到“A2”,navController应选择B/A2目标;
  • 处于“A1”路由时导航到“A2”,navController应选择A/A2目标。

解决方案

Navigation库的2.8.0-beta07版本已实现该行为,核心变更为:

现在搜索导航目标时,不再从基础图开始,而是从当前目标最近的父NavGraph开始。这确保导航到共享/重复目标时,会优先选择离当前目标最近的那个。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 05:29:52