Mamy działanie zawierające menu przesuwania (https://github.com/jfeinstein10/SlidingMenu), w którym dostępne są trzy opcje, nazwijmy je A, B1, C1. Odpowiadają one fragmentom, które pokazujemy w działaniu. Po wybraniu innej opcji z Menu przesuwania zamieniam bieżący fragment na nowy poprzez FragmentManager.Clear Android Fragment z powrotem stos bez poppingu?
Od Fragmentu B1 możesz przejść do dwóch innych, nazwijmy je B2 i B3. Tutaj chcemy, aby klawisz Back zabrał cię z B2 -> B1 lub z B3 -> B1, więc nazywam transaction.addToBackStack (null). Jeśli wybierzemy opcję z menu przesuwania, gdy jesteś na B2 lub B3, chcemy wyczyścić tylny stos, więc używam kodu sugerowanego w tym pytaniu Clear back stack using fragments, który wywołuje popBackStack(), dopóki nie będzie jasne.
Jak dotąd tak dobrze.
Z Fragmentu C1 możesz przejść do Fragmentu C2. Jako C1/C2 są bardziej od projektu 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);
dodać animację slajdów gdzie C1 wysuwa się w lewo, jak ślizga C2 z prawej strony, i vice versa. Naciśnięcie klawisza Wstecz przy włączonym C2 powoduje powrót do C1, z odwróconą animacją i wszystko jest w porządku.
ALE
przypadku wybrania opcji A lub B1 z SlidingMenu i popBackStack(), aby pozbyć C1 z tylnego stosie, to ślizga C2 się w prawo, który wygląda dziwnie. Chciałbym wyczyścić tylny stos bez uruchamiania animacji, ale nie mogę znaleźć sposobu, aby to zrobić. Próbowałem już wywoływać popBackStackImmediate() zamiast tego, ale to nie robi żadnej różnicy.
Jako alternatywa, mogę w ogóle uniknąć wywoływania funkcji addToBackStack, a zamiast tego ręcznie obsłużyć użytkownika, naciskając klawisz Back za pomocą Activity.onBackPressed(), ale być może istnieje rozwiązanie, którego po prostu nie widzę?
To wydaje się robić dokładnie to, czego potrzebuję. Dzięki! –
@ JonathanCaryl Great! Cieszę się, że zadziałało, ponieważ nie byłem w 100% pewny, że to zrobi :) – TronicZomB
Nie działa dla mnie z biblioteką wsparcia v23.1.1 –