我有一个不太常见的片段导航,因为我希望应用程序具有响应性。为此,我几乎只使用片段的show/hide方法。
每当我想要导航到另一个片段并使用返回键返回时,我将该事务添加到backstack中。同时,我还将过渡动画设置为该事务,以便当用户按下返回键时,它会显示反转动画(即popBackStackImmediate()的效果),以前往上一个片段。
我通过以下方式添加这些动画:
我们称之为A -> B -> A导航。因此,当将A移动到B时,会显示一个打开动画;当我们返回到A时,会显示一个反向动画。
然而,当我需要从A到B并将该事务添加到后退堆栈(以便能够使用后退按钮返回到A),然后从B到C(不将此事务添加到后退堆栈),再从C到A按下后退按钮时,问题就出现了。在这种情况下,我的问题是,当用户在C片段上按下后退按钮时,我希望立即将用户带回A片段。但是,由于在A到B的事务中添加了动画,并且该事务已添加到后退堆栈中,因此当用户在片段C上按下后退按钮时,将显示反转事务A-> B(实际上,在显示片段A之前,片段B将在屏幕上闪烁一小段时间)。
如果我能够在A->B事务中访问事务对象并禁用该过渡动画,那么所有操作都将很好地运行。但是,似乎在提交(commit())后,此操作没有任何效果。
有没有办法禁用该动画?
每当我想要导航到另一个片段并使用返回键返回时,我将该事务添加到backstack中。同时,我还将过渡动画设置为该事务,以便当用户按下返回键时,它会显示反转动画(即popBackStackImmediate()的效果),以前往上一个片段。
我通过以下方式添加这些动画:
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
我们称之为A -> B -> A导航。因此,当将A移动到B时,会显示一个打开动画;当我们返回到A时,会显示一个反向动画。
然而,当我需要从A到B并将该事务添加到后退堆栈(以便能够使用后退按钮返回到A),然后从B到C(不将此事务添加到后退堆栈),再从C到A按下后退按钮时,问题就出现了。在这种情况下,我的问题是,当用户在C片段上按下后退按钮时,我希望立即将用户带回A片段。但是,由于在A到B的事务中添加了动画,并且该事务已添加到后退堆栈中,因此当用户在片段C上按下后退按钮时,将显示反转事务A-> B(实际上,在显示片段A之前,片段B将在屏幕上闪烁一小段时间)。
如果我能够在A->B事务中访问事务对象并禁用该过渡动画,那么所有操作都将很好地运行。但是,似乎在提交(commit())后,此操作没有任何效果。
有没有办法禁用该动画?