我正在寻找的是我的片段是否已经在后堆栈中。
例如,我导航到 Fragment A 到 Fragment B。稍后,我导航到 Fragment B 到 Fragment C。现在,我想签入 Fragment C 是否有 Fragment A 在后台堆栈中可用。如果是,我想弹出所有片段直到片段 A 否则我想添加新的片段 A。
请确保我想在片段 C 中检查片段 A 的可用性。
有运气吗?
提前致谢。
我正在寻找的是我的片段是否已经在后堆栈中。
例如,我导航到 Fragment A 到 Fragment B。稍后,我导航到 Fragment B 到 Fragment C。现在,我想签入 Fragment C 是否有 Fragment A 在后台堆栈中可用。如果是,我想弹出所有片段直到片段 A 否则我想添加新的片段 A。
请确保我想在片段 C 中检查片段 A 的可用性。
有运气吗?
提前致谢。
我正在寻找的是我的片段是否已经在后堆栈中。
有一种方法可以使用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
.