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

Navigation Controller:如何向返回栈中插入Fragment

深层链接返回栈插入课程详情页的最优实现

方案一:利用嵌套导航图(推荐)

把课程详情页和视频页归入同一个嵌套导航图,将嵌套图的起始目的地设为课程详情页,同时在视频页配置深层链接。触发深层链接时,导航组件会自动把课程详情页加入返回栈,无需手动处理导航流程,完全依托组件原生栈管理能力,避免手动导航带来的重复入栈、动画异常等问题。

导航图XML示例:

<navigation
    android:id="@+id/course_nav_graph"
    app:startDestination="@id/course_detail_fragment">

    <fragment
        android:id="@+id/course_detail_fragment"
        android:name="com.example.CourseDetailFragment">
        <argument android:name="courseId" app:argType="string"/>
        <action android:id="@+id/action_to_video" app:destination="@id/video_fragment"/>
    </fragment>

    <fragment
        android:id="@+id/video_fragment"
        android:name="com.example.VideoFragment">
        <argument android:name="videoId" app:argType="string"/>
        <deepLink app:uri="example://course/video?courseId={courseId}&videoId={videoId}"/>
    </fragment>
</navigation>

方案二:手动构建返回栈(适配现有导航结构)

如果无法调整现有导航图结构,可在处理深层链接时,先导航到课程详情页,再跳转至视频页,同时通过NavOptions保证栈结构正确:

// 解析深层链接中的参数
val courseId = deepLink.data?.getQueryParameter("courseId") ?: return
val videoId = deepLink.data?.getQueryParameter("videoId") ?: return

// 先导航到课程详情页,避免重复入栈
val courseNavOptions = NavOptions.Builder()
    .setLaunchSingleTop(true)
    .build()
findNavController().navigate(
    CourseDetailFragmentDirections.actionToCourseDetail(courseId),
    courseNavOptions
)

// 再导航到目标视频页
findNavController().navigate(
    VideoFragmentDirections.actionToVideo(videoId)
)

方案三:通过NavDeepLinkRequest配置返回栈

直接构建包含完整层级的深层链接请求,同时指定返回栈规则:

val deepLinkRequest = NavDeepLinkRequest.Builder
    .fromUri(Uri.parse("example://course/video?courseId=123&videoId=456"))
    .build()

val navOptions = NavOptions.Builder()
    // 确保课程详情页被保留在返回栈中
    .setPopUpTo(R.id.course_detail_fragment, false)
    .build()

findNavController().navigate(deepLinkRequest, navOptions)

该方案需要确保导航图中课程详情页与视频页的层级关系正确,setPopUpTo参数指定课程详情页的ID,false表示不弹出该页面,从而将其保留在返回栈内。


内容的提问来源于stack exchange,提问作者Regress.arg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 13:39:22