我要寻找的是我的片段是否已经在堆栈中。
例如,我导航到Fragment A到FragmentB。稍后,我导航到Fragment B到FragmentC。现在,我要检入Fragment C,该文件在后栈中有可用的FragmentA。如果是,我想将所有片段弹出到片段A,否则我想添加新的片段A。
请确保我要检查片段C中片段A的可用性。
有运气吗?
谢谢。
答案 0 :(得分:0)
我要寻找的是我的片段是否已经存在 还是没有后堆栈。
有一种方法可以使用NavController
。
try {
val back:NavBackStackEntry = controller.getBackStackEntry(R.id.nav_a)
Log.d("in_back_stack", back.destination.label.toString())
} catch (ex: IllegalArgumentException){
Log.d("in_back_stack","no_entry")
}
使用Navcontroller.getBackStackEntry(...)
和destinationId
,您可以轻松知道片段是否已在后堆栈中。但是请小心使用此方法。因为如果在后堆栈中找不到IllegalArgumentException
,该方法将抛出destinationId
。
请确保我要检查片段C中片段A的可用性。
您可以从任何地方检查。您只需要引用Navcontroller
。