Проблема с навигационным компонентом Android Jetpack с фрагментом заставки в качестве корневого пункта назначения - PullRequest
0 голосов
/ 27 сентября 2018

Предположим, у нас есть 3 фрагмента с панелями инструментов с функциональностью кнопки вверх

SplashFragment -> FragmentA -> FragmentB 

Это ожидаемый поток приложения.При достижении FragmentB, когда пользователь нажимает кнопку «Назад», он должен перейти к FragmentA и снова при нажатии кнопки «Назад» приложение должно выйти.Как мы можем добиться такого поведения, используя компонент навигации?Я пытался сделать это, используя app:popUpTo внутри тега action, каким-то образом мне удалось заставить его работать для аппаратной кнопки назад, но поведение кнопки вверх не изменилось.

Нужна помощь по этому вопросу.

Ответы [ 3 ]

0 голосов
/ 05 октября 2018

У меня аналогичный поток на месте, что работает, и я считаю, что чистое решение состоит в том, чтобы ваша FragmentA была отправной точкой вашего навигационного графика (который всегда будет находиться на вершине backstack на обеде), а затем вывы хотите перейти (возможно, условно) к SplashFragment на onStart (или ранее в жизненном цикле) вашего FragmentA, и, наконец, когда вы хотите, чтобы ваш SplashFragment исчез, вы используете findNavController().popBackStack() для всплывающегофрагмент.тогда только фрагменты A и B останутся в вашем стеке, и обратно будет работать как положено.

надеюсь, это поможет.

0 голосов
/ 07 декабря 2018

Предупреждение. На Navigation alpha08 Warning это устарело. * И ссылка *1003* является текущим решением.

Это может быть ответ, который вы хотите.Используйте app:clearTask="true"

<fragment
    android:id="@+id/splashFragment"
    android:name="xxx.SplashFragment"
    android:label="fragment_splash"
    tools:layout="@layout/fragment_splash">
    <action
        android:id="@+id/action_splashFragment_to_mainFragment"
        app:destination="@id/mainFragment"
        app:enterAnim="@anim/anim_right_in"
        app:exitAnim="@anim/anim_left_out"
        app:popEnterAnim="@anim/anim_left_in"
        app:popExitAnim="@anim/anim_right_out"
        app:clearTask="true"/>

Компонент архитектуры навигации - Заставка

0 голосов
/ 02 октября 2018

Вы можете попытаться сделать это следующим образом:

После того, как приложение запустит Fragment-A, очистите backstack ie;SplashFragment, теперь, когда пользователь перемещается вперед, все то же самое, но после возврата к Fragment-A, если он нажимает кнопку «Назад». Приложение закрывается.

Надеюсь, это поможет!

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