У меня есть целевой фрагмент под названием «C», к которому можно перейти с помощью одного из 3 разных потоков.
Например,
Поток 1: A -> C
Поток 2: A -> B -> C
Поток 3: A -> X -> Y -> C
Я использую глобальные действия для перехода к C, потому что это позволяет мне использовать одно и то же действие для навигации независимо от того, нахожусь ли я в потоке 1, 2 или 3. Кажется, все работает нормально, но у меня проблемы с возвращением из C сейчас.
Для потоков 1 и 2 я хочу go из C обратно в A. Я делал это, вызывая .popBackStack(R.id.A, false)
, что сработало хорошо. Теперь мы добавили Flow 3 в наше приложение. В потоке 3, когда я возвращаюсь из C, я хочу go к X, а не A. Итак, мое предыдущее решение с использованием .popBackStack(R.id.A, false)
здесь не работает, так как это всегда возвращает меня к A.
Есть ли рекомендуемый способ обратной навигации, зависящий от того, как пользователь добрался до пункта назначения, в котором он сейчас находится?
Я мог видеть, исследуя существующий задний стек, и вижу ли я X или Y , тогда я бы знал, что нужно использовать .popBackStack(R.id.x, false).
или .popBackStack(R.id.a, false)
.
Я мог бы передать «задний идентификатор» в качестве аргумента при запуске C, который затем мог бы использовать в .popBackStack(backId, false)
Я упустил здесь что-то очевидное?