Убить фрагмент в навигационном контроллере - PullRequest
2 голосов
/ 25 июня 2019

Мой поток фрагментов выглядит так

Main -> A -> B -> C ->A

Во фрагменте c он имеет кнопку отправки, которая вернется к A. Когда я нажимаю кнопку «Назад» в «А», я хочу вернуть ее в «Главное». Но вместо этого он возвращается к фрагменту c.

Во фрагменте C я использую это

 findNavController().navigate(R.id.action_c_to_a)

nav_graph.xml

 <fragment
        android:id="@+id/fragmentC"
        android:name="xxx"
        android:label="xxx">
        <action
            app:launchSingleTop="true"
            app:popUpTo="@+id/fragmentA"
            app:popUpToInclusive="true"
            android:id="@+id/action_c_to_a"
            app:destination="@id/fragmentA" />
    </fragment>

Ответы [ 4 ]

6 голосов
/ 30 июня 2019

Почему бы не всплыть на фрагменте А?Вы можете просто позвонить findNavController().popBackStack(R.id.fragmentA, false) вместо навигации с помощью действия.

0 голосов
/ 04 июля 2019

Вы можете переопределить поведение кнопки назад, чтобы сделать это. Обеспечить пользовательскую обратную навигацию

0 голосов
/ 03 июля 2019

попробуй посмотреть на моё полное решение с удалением / уничтожением фрагмента из backstack.

Компонент навигации устанавливает анимацию перехода программно

0 голосов
/ 25 июня 2019

используйте следующий код для удаления фрагмента из backstack:

FragmentManager manager = getActivity().getSupportFragmentManager();
FragmentTransaction trans = manager.beginTransaction();
trans.remove(myFrag);
trans.commit();
manager.popBackStack();
...