Android 如何检查导航目的地是否在NavController后台堆栈中?
我要寻找的是我的片段是否已经在后堆栈中 例如,我导航到片段A到片段B。稍后,我导航到片段B到片段C。现在,我想签入片段C,在后堆栈中是否有可用的片段A。如果是,我想弹出所有片段到片段A,否则我想添加新片段A 请确保我想检查片段C中片段A的可用性 运气好吗 提前谢谢 我要找的是我的碎片是否已经在 是否返回堆栈 有一种方法可以使用Android 如何检查导航目的地是否在NavController后台堆栈中?,android,android-jetpack,android-architecture-navigation,android-jetpack-navigation,Android,Android Jetpack,Android Architecture Navigation,Android Jetpack Navigation,我要寻找的是我的片段是否已经在后堆栈中 例如,我导航到片段A到片段B。稍后,我导航到片段B到片段C。现在,我想签入片段C,在后堆栈中是否有可用的片段A。如果是,我想弹出所有片段到片段A,否则我想添加新片段A 请确保我想检查片段C中片段A的可用性 运气好吗 提前谢谢 我要找的是我的碎片是否已经在 是否返回堆栈 有一种方法可以使用NavController 试试看{ val back:NavBackStackEntry=controller.getBackStackEntry(R.id.nav_a)
NavController
试试看{
val back:NavBackStackEntry=controller.getBackStackEntry(R.id.nav_a)
Log.d(“在堆栈中”,back.destination.label.toString())
}捕获(例如:IllegalArgumentException){
Log.d(“在后台堆栈中”,“无条目”)
}
使用NavController.getBackStackEntry(…)
&destinationId
您可以很容易地知道片段是否已经在后堆栈中。但是使用这种方法时要小心。因为如果在后堆栈中找不到destinationId
,该方法将抛出一个IllegalArgumentException
请确保我想检查片段C中片段A的可用性
你可以在任何地方查看。您只需要参考
NavController
我不认为导航AAC是为该用例设计的,但是您可以潜在地使用fragmentManager.getFragments()
并遍历当前添加的片段。