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

如何在Jetpack Navigation目标Fragment中提取应用内DeepLink的URI

解决方案:利用NavBackStackEntry的deeplink属性获取导航URI

不用修改导航图参数,也无需手动传递URI,直接通过Navigation组件原生API就能拿到触发导航的目标URI,具体实现如下:

  • 在Fragment B的onViewCreated(或其他合适的生命周期方法)中,获取当前导航栈条目:
    val navController = findNavController()
    val currentBackStackEntry = navController.currentBackStackEntry
    
  • 从栈条目中提取触发导航的URI:
    val triggerUri = currentBackStackEntry?.deeplink?.uri
    // 此时triggerUri就是Fragment A中传入的"myApp://destination"
    

原理说明

当你通过navController.navigate(URI)发起内部DeepLink导航时,Navigation框架会自动将该URI绑定到目标Fragment对应的NavBackStackEntry中。deeplink.uri是官方暴露的专用API,专门用来获取触发当前栈条目的DeepLink地址,不管是外部跳转还是应用内导航都适用。

你之前在arguments.mData中看到的URI是框架内部存储的临时数据,没有公开的键值可供直接提取,因此使用deeplink属性才是符合组件设计逻辑的最优方案,比手动传参更简洁且无需额外配置导航图。

内容的提问来源于stack exchange,提问作者Gastón Saillán

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 12:31:00