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

时间:2018-08-17 14:28:50

标签: android back-stack android-navigation android-jetpack android-architecture-navigation

我正在尝试使用通知中的PendingIntent来实现到应用程序的特定“详细信息”页面的导航,但是我一直无法从“详细信息”页面重新创建返回堆栈,一直回到起始目标。

我制作了一个示例应用here,其中包含一个活动和三个片段,以进行演示:

Fragment 1   ->   Fragment 2  ->  Fragment 3
(start dest) <-               <-

从片段1(起始目标)开始,我使用

直接导航到片段3
    Navigation.findNavController(this, R.id.nav_host_fragment).navigate(R.id.fragment2,
            null,
            NavOptions.Builder()
                    .build())

从片段3中,当我打电话给Navigation.findNavController(this,R.id.nav_host_fragment).navigateUp()时,我导航回到片段1。是否有办法让它导航到新创建的片段2?

1 个答案:

答案 0 :(得分:0)

感谢M.G指向正确的方向,我设法通过使用导航库手动创建后退堆栈来解决此问题。这意味着多次依次调用findNavController(...).navigate(...)来创建一个堆栈。

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

findNavController.navigate(R.id.fragment1, ...)
findNavController.navigate(R.id.fragment2, ...)
findNavController.navigate(R.id.fragment3, ...)