android-fragments 导航组件弹出窗口碎片

2mbi3lxu  于 2022-11-13  发布在  Android
关注(0)|答案(2)|浏览(128)

我使用的是导航组件。

A -> C -> D -> E
B -> C -> D -> E

因此,您可以从两个片段A和B开始一个屏幕序列。假设您需要从E返回到开始该序列的片段,因此A或B。我可以存储开始该序列的片段的id,然后在调用操作进行导航时使用setPopUpTo转到该片段。
有没有其他的方法?比如说pop up to C inclusive?这样应该会弹出C,D和E,然后回到原来的片段,而不需要我指定它。换句话说,我只想一直弹出片段,直到我指定的片段(在这个例子中是C)也弹出为止。

tp5buhyn

tp5buhyn1#

为了避免记忆目的地出现在后栈中,你可以这样做(Kotlin):

val firstFragment = findNavController().backQueue.firstOrNull { it.destination.id == R.id.fragmentA }?.destination?.id
   firstFragment?.let {
      val navOptions = NavOptions.Builder()
      navOptions.setPopUpTo(firstFragment,false)
      findNavController().navigate(firstFragment,null,navOptions.build())
    }
jm81lzqq

jm81lzqq2#

要弹出堆栈,您可以使用

navController.popBackStack(R.id.action_group_to_preview, false)

相关问题