我们使用NavController.OnDestinationChangedListener
和提供的参数NavDestination
隐藏/显示底部导航栏(锚定在根活动中),具体取决于当前目的地。但是我们的逻辑还要求知道哪个是当前目的地的先前目的地,以便隐藏/显示底部导航栏。
NavController.OnDestinationChangedListener
还提供了一个NavController
参数,并且NavController
具有一个称为mBackStack
的内部属性,这似乎正是我们所需要的。那么,有没有办法在不使用反射的情况下访问NavController堆栈?
谢谢!
答案 0 :(得分:0)
有一种方法可以通过访问图形中的所有目标,然后在每个目标中调用NavDestination
来推断当前在后退堆栈中的navController.getBackStackEntry
。
val destinationsInBackStack = navController.graph.mapNotNull { dest ->
try {
navController.getBackStackEntry(dest.id)
dest
} catch (e: IllegalArgumentException) {
null
}
}