提交后禁用片段事务动画

时间:2014-08-01 10:18:52

标签: android fragment fragmenttransaction

我有一些不常见的片段导航,因为我想让应用程序响应。因此,我几乎只使用片段显示/隐藏方法。

每当我想要导航到另一个片段并使用后退键返回时,我将此事务添加到backstack。有了这个,我还将过渡动画设置为该事务,这样当用户按下时,它会显示一个反转动画(popBackStackImmiediate()的效果),当用户转到上一个片段时。

我通过以下方式添加这些动画:

fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);

让我们称之为A - > B - >导航。因此,当A移动到B时,会显示一个开始动画,然后当我们返回A时,会显示一个反转动画。

然而问题是,当我遇到需要从A到B的情况时,将此事务添加到后台堆栈(能够返回带有后退按钮的A),然后从B到C(不添加)此事务返回堆栈),并在按下后退按钮时从C到A.这种情况下的问题是,当我按下该C片段上的后退按钮时,我希望用户可以毫不费力地被带到A片段。但是,因为从A到B的事务中添加了动画,并且该事务被添加到后栈,当用户按下片段C上的按钮时,正在显示反转事务A-> B(实际上,片段B在显示片段A之前,在屏幕上闪烁几分之一秒。)

如果我能够在A-> B事务中到达事务对象并禁用该过渡动画,那么它将全部运行良好。但是,在commit()完成后,这个操作似乎没有效果。

无论如何我可以禁用该动画吗?

1 个答案:

答案 0 :(得分:1)

首先想到的是在进入片段C之前调用popBackStackImmediate()。这样,当你从C返回时,你会直接进入A.

现在关于动画的事情,你可以试试this answer

它基本上表示你创建了一个布尔标志,当你不想看到动画时,你设置为true。

然后,如果上述条件为真,则片段的onCreateAnimation方法返回一个空动画。