Анимация фрагментов и заднего стека

У меня проблемы с использованием или понимания того, как извлечение FragmentTransaction из заднего стека обрабатывает пользовательские {{1} } анимации. В частности, я ожидаю, что он вызовет анимацию "выхода", но это не похоже.

У меня есть простой метод обработки транзакции фрагмента (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) в отношении движения вперед, щелкнув сообщение, а затем назад, используя назад кнопка. Желательно не переопределять функциональность кнопки "Назад" и следить за своим собственным состоянием фрагмента, поскольку у меня может быть несколько "транзакций", от которых я хотел бы отказаться, и я {{1} } не любитель изобретать колеса заново.

Также спрашивается в группе разработчиков Android: http://groups.google.com/group/android-developers/browse_thread/thread/1136a3a70fa0b6e9

54
задан Programmer Bruce 28 May 2011 в 11:22
поделиться