我在使用或理解从后台堆栈弹出 FragmentTransactions 如何处理自定义动画时遇到问题。具体来说,我希望它调用“out”动画,但似乎没有。
我有一个简单的方法来处理片段事务(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