Limpar pilha de fragmentos do Android sem estourar?
Nós temos uma atividade que contém um SlidingMenu (https://github.com/jfeinstein10/SlidingMenu) em que há três opções, vamos chamá-las de A, B1, C1. Estes correspondem aos fragmentos que mostramos na atividade. Quando você seleciona uma opção diferente do SlidingMenu, eu substituo o fragmento atual pelo novo através do FragmentManager.
Do Fragmento B1 você pode ir para os outros dois, vamos chamá-los de B2 e B3. Aqui queremos que a tecla Back o leve de B2 -> B1 ou de B3 -> B1, então eu chamo transaction.addToBackStack (null). Se selecionarmos uma opção do SlidingMenu quando você estiver no B2 ou B3, queremos limpar a pilha de trás, então eu uso o código como sugerido nesta pergunta.Limpar pilha de volta usando fragmentos que chama popBackStack () até ficar claro.
Por enquanto, tudo bem.
Do Fragmento C1, você pode ir para o Fragmento C2. Como C1 / C2 são mais de um projeto Mestre / Detalhe eu 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);
para adicionar uma animação de slides em que C1 desliza para a esquerda enquanto C2 desliza da direita e vice-versa. Pressionando a tecla Voltar enquanto em C2 nos leva de volta para C1, com a animação reversa, e tudo está bem.
MAS
Se você selecionar A ou B1 do SlidingMenu e nós popBackStack () para se livrar de C1 da pilha de trás, então ele desliza C2 para a direita, o que parece estranho. O que eu gostaria de fazer é limpar a pilha de trás sem executar a animação, mas não consigo encontrar uma maneira de fazer isso. Eu tentei chamar popBackStackImmediate () em vez disso, mas isso não parece fazer nenhuma diferença.
Como alternativa, eu acho que poderia evitar chamar addToBackStack, e em vez disso manipular manualmente o usuário pressionando a tecla Back via Activity.onBackPressed (), mas talvez haja uma solução que eu simplesmente não consigo ver?