Android NavController 获取返回堆栈
Android NavController get backstack
我们根据当前目的地使用 NavController.OnDestinationChangedListener
和提供的参数 NavDestination
到 hide/show 底部导航栏(锚定在根 activity 中)。但是我们的逻辑还需要知道哪个是当前目的地的先前目的地,以便 hide/show 底部导航栏。
NavController.OnDestinationChangedListener
也提供了一个NavController
参数,NavController
有一个内部的属性叫做mBackStack
,这似乎正是我们需要的。那么,有没有一种方法可以在不使用反射的情况下访问 NavController backstack?
谢谢!
有一种方法可以通过访问图中的所有目的地然后在每个目的地中调用 navController.getBackStackEntry
来推断当前在后台堆栈中的 NavDestination
(s)。
val destinationsInBackStack = navController.graph.mapNotNull { dest ->
try {
navController.getBackStackEntry(dest.id)
dest
} catch (e: IllegalArgumentException) {
null
}
}
我们根据当前目的地使用 NavController.OnDestinationChangedListener
和提供的参数 NavDestination
到 hide/show 底部导航栏(锚定在根 activity 中)。但是我们的逻辑还需要知道哪个是当前目的地的先前目的地,以便 hide/show 底部导航栏。
NavController.OnDestinationChangedListener
也提供了一个NavController
参数,NavController
有一个内部的属性叫做mBackStack
,这似乎正是我们需要的。那么,有没有一种方法可以在不使用反射的情况下访问 NavController backstack?
谢谢!
有一种方法可以通过访问图中的所有目的地然后在每个目的地中调用 navController.getBackStackEntry
来推断当前在后台堆栈中的 NavDestination
(s)。
val destinationsInBackStack = navController.graph.mapNotNull { dest ->
try {
navController.getBackStackEntry(dest.id)
dest
} catch (e: IllegalArgumentException) {
null
}
}