Как выполнить условную обратную навигацию с помощью компонентов навигации? - PullRequest
0 голосов
/ 04 мая 2020

У меня есть целевой фрагмент под названием «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)

Я упустил здесь что-то очевидное?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...