使用Android导航架构组件重新创建Backstack

lim*_*ale 7 android back-stack android-navigation android-jetpack android-architecture-navigation

我正在尝试使用PendingIntent从通知中实现导航到我的应用程序的特定详细信息页面,但是我在从详细信息页面一直重新创建回溯到起始目的地时遇到了问题.

我在这里制作了一个示例应用程序,其中包含一个活动和三个片段来演示:

Fragment 1   ->   Fragment 2  ->  Fragment 3
(start dest) <-               <-
Run Code Online (Sandbox Code Playgroud)

从片段1(起始目的地),我使用直接导航到片段3

    Navigation.findNavController(this, R.id.nav_host_fragment).navigate(R.id.fragment2,
            null,
            NavOptions.Builder()
                    .build())
Run Code Online (Sandbox Code Playgroud)

从片段3开始,当我打电话时,我将Navigation.findNavController(this,R.id.nav_host_fragment).navigateUp()导航回Fragment 1.有没有办法让它导航到新创建的片段2?

lim*_*ale 4

感谢 MG 指出了正确的方向,我已经通过使用导航库手动创建 backstack 解决了这个问题。这意味着连续调用findNavController(...).navigate(...)多次来创建一个返回堆栈。

例如,当我深层链接到片段 3 但想要向上导航回到片段 1 和 2 时,我会调用:

findNavController.navigate(R.id.fragment1, ...)
findNavController.navigate(R.id.fragment2, ...)
findNavController.navigate(R.id.fragment3, ...)
Run Code Online (Sandbox Code Playgroud)