Избегайте возврата к определенному фрагменту с помощью компонента архитектуры навигации

#android #android-architecture-navigation

#Android #android-архитектура-навигация

Вопрос:

У меня есть два потока навигации с компонентом архитектуры навигации :

 A > B > C
  

И

 A > X > C
  

В первом потоке popBackStack() работает так, как ожидалось.
Но я хочу другого поведения во втором потоке. Я не хочу возвращаться к фрагменту X, а непосредственно к фрагменту A.

Поскольку фрагмент C доступен несколькими способами, я не могу использовать фиксированный destinationId in popBackStack(destinationId,inclusive) .

Есть решение? Может быть конфигурация направления навигации?

Ответ №1:

Используйте это действие для x- c.

 <fragment
android:id="@ id/x"
...
>
 <action
            android:id="@ id/action_X_to_C"
            app:destination="@id/C"
            app:popUpTo="@id/A" >
        </action>
</fragment>
  

Во fragmentX

 findNavController().navigate(R.id.action_x_to_C)