Wyczyścić tylny stos fragmentów Androida bez klikania?

Mamy działanie, które zawiera SlidingMenu (https://github.com/jfeinstein10/SlidingMenu) w którym są trzy opcje, nazwijmy je A, B1, C1. Odpowiadają one fragmentom, które pokazujemy w działaniu. Po wybraniu innej opcji z menu SlidingMenu zamieniam bieżący fragment na nowy za pomocą FragmentManager.

Z fragmentu B1 możesz przejść do dwóch innych, nazwijmy je B2 i B3. Tutaj chcemy, aby klawisz Wstecz przeniósł cię z B2 -> B1 lub z B3 -> B1, więc zadzwonię transaction.addToBackStack (null). Jeśli wybieramy opcję z SlidingMenu, gdy jesteś na B2 lub B3, chcemy wyczyścić tylny stos, więc używam kodu zgodnie z sugestią w tym pytaniuWyczyść stos pleców za pomocą fragmentów który wywołuje popBackStack (), aż stanie się jasny.

Jak na razie dobrze.

Z Fragmentu C1 możesz przejść do Fragmentu C2. Jako, że C1 / C2 są bardziej projektami Master / Detail, używam

fragmentTransaction.setCustomAnimations(R.animator.slide_in_from_right,
    R.animator.slide_out_to_left, R.animator.slide_in_from_left,
    R.animator.slide_out_to_right);

aby dodać animację slajdu, w której C1 przesuwa się w lewo, gdy C2 wsuwa się z prawej strony i odwrotnie. Naciśnięcie klawisza Wstecz na C2 powoduje powrót do C1 z animacją odwrotną i wszystko jest w porządku.

ALE

Jeśli wybierzesz A lub B1 z SlidingMenu i popBackStack (), aby pozbyć się C1 z tylnego stosu, to przesuwa C2 w prawo, co wygląda dziwnie. Chciałbym wyczyścić tylny stos bez uruchamiania animacji, ale nie mogę znaleźć sposobu, aby to zrobić. Próbowałem wywołać zamiast tego popBackStackImmediate (), ale to nie wydaje się mieć żadnego znaczenia.

Jako alternatywa, zgaduję, że w ogóle mogłem uniknąć wywołania addToBackStack i zamiast tego ręcznie obsługiwać użytkownika naciskając klawisz Back za pomocą Activity.onBackPressed (), ale być może istnieje rozwiązanie, którego po prostu nie widzę?

questionAnswers(2)

yourAnswerToTheQuestion