У меня проблемы с использованием или с пониманием того, как извлечение FragmentTransactions из заднего стека обрабатывает настраиваемые анимации. В частности, я ожидаю, что он вызовет анимацию «выхода», но, похоже, это не так.
У меня есть простой метод обработки транзакции фрагмента (FragmentTransaction), где я добавляю фрагмент и применяю настраиваемый переход, чтобы он постепенно появлялся / затухал. Я также добавляю это в задний стек, чтобы пользователь мог отменить эту транзакцию с помощью кнопки возврата, по сути переходя в состояние до добавления фрагмента.
protected void changeFragment() {
FragmentTransaction ft = fm.beginTransaction();
ft.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out);
ft.add(R.id.fragment_container, new TestFragment());
ft.addToBackStack(null);
ft.commit();
}
Все отлично работает при движении вперед, но когда пользователь нажимает кнопку «Назад», анимация перехода не меняется. Я ожидал, что когда фрагмент будет удален, он будет использовать анимацию исчезновения. Вместо этого кажется, что он выскакивает (без анимации), а затем кажется, что контейнер исчезает. Я не уверен, что это именно то, что происходит, но фрагмент определенно не исчезает.
Мое приложение использует библиотеку совместимости для добавления поддержки фрагментов, но я предполагаю, что это применимо и к Honeycomb (android-11). Кто-нибудь знает, делаю ли я здесь что-то не так или просто жду слишком многого? В идеале я хотел бы анимировать фрагменты аналогично тому, как это делает Gmail (на Xoom) в отношении движения вперед, щелкнув сообщение, а затем назад, используя кнопку «Назад». Желательно не переопределять функциональность кнопки «Назад» и не отставать от моего собственного состояния фрагмента, поскольку у меня может быть несколько «транзакций», от которых я хотел бы отказаться, и я не фанат заново изобретать колеса.
Также спрашивают в группе разработчиков Android: http://groups.google.com/group/android-developers/browse_thread/thread/1136a3a70fa0b6e9