我有一个具有navGraph的活动,它在创建活动时有条件地选择一个startDestination。
private suspend fun checkStatusAndNavigate(userID: Int) {
val navController = findNavController(nav_host_container)
val user = getUserFromDB(userID)
val dateNow = Date((if (prefSaved) prefTime() else System.currentTimeMillis())
val navGraph = navController.navInflater.inflate(nav_graph).apply {
// NavGraph inflates with one of three possible starting points: A, B, or C.
startDestination = when {
checkDate(dateNow) == DateCheck.OldDate -> R.id.fragment_a
!user.hasOptedIn -> R.id.fragment_b
else -> R.id.fragment_c
}
}
navController.setGraph(navGraph)
}在navController.setGraph(navGraph)之后,将启动startDestination。这与预期的一样。
片段B的唯一目标是片段C。但是当用户在片段C中并执行onBackPressed()时,我想跳过片段B,并返回到调用该活动的任何地方(有几个选项,因此覆盖onBackPressed不是一个很好的选项)。
我不认为这是popTo或popToInclusive的问题。我不想清除后端堆栈。如果可能的话,我只想防止片段B进入后台堆栈。
发布于 2020-06-24 05:46:50
如果你不想从C返回访问B,那么你应该创建一个popTo=B、popToInclusive=true和destination=C的操作。
https://stackoverflow.com/questions/62540257
复制相似问题