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

Jetpack Compose嵌套导航中如何配置指向内部页面的Deep Link

你将嵌套导航包裹在composable节点内配置DeepLink的方案不推荐使用,该写法不符合Navigation Compose的设计规范,会导致导航栈分层异常、回退逻辑混乱、NavController状态同步出错等问题。

正确实现方案

如果你需要DeepLink触发后直接跳转至该嵌套导航的默认起始页(也就是你示例中的username页面),直接给navigation节点配置DeepLink即可:

fun NavGraphBuilder.loginGraph(navController: NavController) {
    val deeplinkuri = "你的deeplink地址"
    navigation(
        startDestination = "username",
        route = "login",
        // 直接给嵌套导航根节点配置DeepLink
        deepLinks = listOf(navDeepLink {
            uriPattern = deeplinkuri
        })
    ) {
        composable("username") { ... }
        composable("password") { ... }
        composable("registration") { ... }
    }
}

触发DeepLink后,系统会自动构建正确的导航栈:先加载嵌套导航根节点,再自动跳转至其配置的startDestination,回退逻辑完全符合交互预期。

如果你需要根据不同的DeepLink跳转至嵌套导航内的不同子页面,直接给对应子composable节点配置DeepLink即可:

fun NavGraphBuilder.loginGraph(navController: NavController) {
    navigation(startDestination = "username", route = "login") {
        composable(
            route = "username",
            deepLinks = listOf(navDeepLink {
                uriPattern = "你的跳转到username的deeplink地址"
            })
        ) { ... }
        composable(
            route = "password",
            deepLinks = listOf(navDeepLink {
                uriPattern = "你的跳转到password的deeplink地址"
            })
        ) { ... }
        composable("registration") { ... }
    }
}

该方式触发DeepLink后,系统会自动将嵌套导航根节点、目标子页面依次加入导航栈,回退时会先回到嵌套导航的上一级页面,不会出现栈逻辑异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:15:06