Компонент навигации Android меняет backstack - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь использовать компонент навигации Android. У меня есть интересный случай в моем приложении У меня есть несколько фрагментов: A, B, C, D, E сначала я открываю A -> B -> C Но затем я открываю фрагмент "C" и мне нужно изменить его задний стек это должно быть как A -> D -> E -> C

Для навигации по onBackPressed мне нужно удалить фрагмент "B" и добавить фрагменты "D & E", которые ранее никогда не открывались

Ответы [ 2 ]

0 голосов
/ 18 апреля 2019

Навигация по Android является относительно новой, и я не исследовал всю библиотеку, чтобы с уверенностью сказать, что вы не можете, ей не хватает возможности выполнить ваш вариант использования.При этом вы можете добавить app:popUpTo к своему действию в файле навигационных ресурсов.Это означает, что ваш фрагмент всегда будет отображаться в предопределенном фрагменте независимо от того, что находится в заднем стеке.Вот пример кода:

<fragment
android:id="@+id/c"
android:name="com.example.myapplication.C"
android:label="fragment_c"
tools:layout="@layout/fragment_c">

<action
    android:id="@+id/action_c_to_a"
    app:destination="@id/a"
    app:popUpTo="@+id/a"
    app:popUpToInclusive="true"/>
</fragment>

Посмотрите документацию здесь

0 голосов
/ 18 апреля 2019

Вы можете справиться с обратным нажатием, как это.

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
         // open another fragment which you want
    }
    return true;
}

И вы должны удалить B из стека при открытии C

...