Abbiamo un'attività che contiene uno SlidingMenu (https://github.com/jfeinstein10/SlidingMenu), in cui ci sono tre opzioni, chiamiamoli A, B1, C1. Questi corrispondono ai Frammenti che mostriamo nell'Attività. Quando selezioni un'opzione diversa da SlidingMenu, sostituisco il frammento corrente con quello nuovo tramite FragmentManager.Cancella stack back di frammenti Android senza scoppiare?
Da Frammento B1 si può andare a due altri, chiamiamoli B2 e B3. Qui vogliamo che il tasto Indietro ti porti da B2 -> B1 o da B3 -> B1, quindi chiamo transaction.addToBackStack (null). Se selezioniamo un'opzione dal SlidingMenu quando sei in B2 o B3 vogliamo cancellare la pila avanti, per cui uso il codice come suggerito in questa domanda Clear back stack using fragments che chiama popBackStack() finché non è chiaro.
Fin qui tutto bene.
Da Frammento C1 si può andare al frammento C2. Come C1/C2 sono più di un disegno master/dettaglio che uso
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);
aggiungere un'animazione diapositiva in cui C1 scivola fuori a sinistra come C2 scorre da destra, e viceversa. Premendo il tasto Indietro mentre ci si trova in C2, si torna a C1, con l'animazione inversa, e tutto è buono.
MA
Se si seleziona A o B1 dal SlidingMenu e noi popBackStack() per sbarazzarsi di C1 dalla pila schiena, poi scivola C2 verso destra, che sembra strano. Quello che mi piacerebbe fare è cancellare il back stack senza eseguire l'animazione, ma non riesco a trovare un modo per farlo. Ho provato a chiamare popBackStackImmediate() invece, ma questo non sembra fare alcuna differenza.
Come alternativa Credo che avrei potuto evitare di chiamare addToBackStack a tutti, e invece manualmente gestire l'utente preme il tasto Indietro via Activity.onBackPressed(), ma forse c'è una soluzione non riesco proprio a vedere?
che sembra fare esattamente quello che mi serve. Grazie! –
@JonathanCaryl Ottimo! Sono contento che ha funzionato come io non ero davvero sicuro al 100% che sarebbe :) – TronicZomB
Non funziona per me con libreria di supporto v23.1.1 –