我正在使用导航组件。假设你有这些可能的导航
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)