Изменить анимацию фрагмента уже в стеке
Предположим, что я запустил следующий код, чтобы поместить фрагмент в стек. Он устанавливает анимацию, когда я сначала просматриваю фрагмент и когда выйдет фрагмент.
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.setCustomAnimations(R.anim.slide_left,
R.anim.no_anim,
R.anim.no_anim_show,
R.anim.slide_right_away);
fragmentTransaction.replace(R.id.container, fragment, tag);
fragmentTransaction.addToBackStack(tag);
fragmentTransaction.commit();
Если я хочу изменить анимацию выхода позже, как я могу это сделать? Как и в, если бы у меня был следующий код:
getFragmentManager().popBackStack();
Но мне нужна другая анимация, затем я был первоначально помещен в стек.
Ответы
Ответ 1
Следующее - это то, что я пробовал, и он работал:
getFragmentManager().beginTransaction().setCustomAnimations(
R.anim.slide_left, R.anim.new_anim)
.remove(fragment)
.commit();
Итак, похоже, что я должен явно "удалить" фрагмент в новой транзакции фрагмента, чтобы использовать новую анимацию выхода
Ответ 2
Вы можете изменить пользовательскую анимацию, прежде чем появляться из заднего стека
getFragmentManager().beginTransaction().setCustomAnimations(R.anim.slide_left,
R.anim.no_anim,
R.anim.no_anim_show,
R.anim.new_pop_exit).commit();
и выполнить незавершенные транзакции перед тем, как выложить стек
getFragmentManager().executePendingTransactions();
getFragmentManager().popBackStackImmediate();
Примечание: анимации popExit будут воспроизводиться для операций выхода, особенно при появлении заднего стека