Вставить стопку фрагментов без воспроизведения всплывающей анимации

Я помещаю фрагмент в стек фрагментов, используя следующий код:

FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_right,
     R.anim.slide_in_left, R.anim.slide_out_left);
fragmentTransaction.replace(getId(), newFragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();

Таким образом, когда стек фрагментов выталкивается, например при нажатии кнопки «Назад» воспроизводится всплывающая анимация фрагмента. Однако бывают ситуации, в которых я хотел бы вытолкнуть стопку фрагментов, не показывая эту анимацию, например потому что я только что вернулся из другого действия и хочу сразу отобразить предыдущий фрагмент без анимации.

Пример навигации может выглядеть так:

  • Пользователь находится на начальном экране с корневым фрагментом
  • Он выбирает элемент в корневом фрагменте, который затем отображает новый фрагмент, чтобы показать подробности этого элемента. Он делает это с помощью транзакции фрагмента, которая устанавливает анимацию как для случая push, так и для случая pop (поэтому, когда пользователь нажимает кнопку «Назад», переход становится анимированным)
  • Из этого фрагмента он запускает действие, которое (по любой причине) удаляет элемент, который только что был показан
  • Когда это действие завершится, я хотел бы вернуться к корневому фрагменту, не показывая «всплывающую анимацию» «детального фрагмента»

Есть ли способ вытолкнуть стопку фрагмента без воспроизведения указанная всплывающая анимация?

55
задан ChristophK 16 February 2012 в 21:45
поделиться