Обработка вложенного фрагмента с глубоким обратным стеком - PullRequest
0 голосов
/ 29 февраля 2020

У меня есть иерархия экрана ниже [Activity1] -> [фрагмент1] -> [фрагмент2] -> [фрагмент3]

У меня есть глубокая ссылка, которая должна открыть [Деятельность1] с помощью [фрагмент3]. При обратном нажатии, Он должен перейти к [фрагмент2] и далее назад нажать к [фрагмент1]

. Как я могу добиться этого, не показывая [фрагмент1] и [фрагмент2] перед [фрагментом 3], создавая [фрагмент1] и [ фрагмент2] заранее и добавление его в задний стек - дорогая для меня работа.

1 Ответ

0 голосов
/ 29 февраля 2020

Делая это вручную

Вы можете обнаружить кнопку возврата с помощью onBackPressed(), проверить, есть ли уже фрагмент в стеке, используя getBackStackEntryCount(), и если нет ни одного , замените fragment3, используя fragment2 (без добавления fragment3 в backstack).

Повторите это для fragment1. Вы, вероятно, захотите построить свою навигацию так, чтобы это не выглядело как взлом. В основном, если вы находитесь на фрагменте не root в дереве навигации, но задний стек пуст, замените фрагмент вручную.

Использование библиотеки

Если вместо написания решения самостоятельно вы предпочитаете какую-то стандартную библиотеку для его обслуживания, тогда Jetpack Navigation - это официальная опция, которую вы, возможно, захотите check.

Согласно документации:

Компонент Navigation поддерживает глубокое связывание и воссоздает реалистичный c задний стек для вас при связывании с любым пунктом назначения в вашем навигационном графе.

https://developer.android.com/guide/navigation/navigation-principles

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