У меня возникли проблемы с использованием или пониманием того, как 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