导航组件弹出片段



我正在使用导航组件。假设你有这些可能的导航

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

因此,您可以从两个片段a和B开始一系列屏幕。假设从E开始,你需要回到开始序列的片段,所以A或B。我可以存储启动序列的片段的id,然后在调用操作进行导航时使用setPopUpTo转到该片段。

还有别的办法吗?有话要说pop up to C inclusive吗?这应该会弹出C、D和E,并返回到原始片段,而无需我指定。换句话说,我只想不断弹出片段,直到我指定的片段(在这种情况下是C(也弹出为止。

为了避免在背包中再次出现目的地,您可以这样做(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())
}

要弹出堆栈,可以使用

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

相关内容

  • 没有找到相关文章