FragmentTransaction.TRANSIT_NONE 未按预期工作

FragmentTransaction.TRANSIT_NONE is not working as expected

如何在没有任何动画的情况下切换到另一个片段?

我有两个片段,show/hide 它们使用这个:

supportFragmentManager
    .beginTransaction()
    .hide(currentFragment)
    .show(selectedFragment)
    .setTransition(FragmentTransaction.TRANSIT_NONE)
    .commit()

我希望它们在没有任何动画的情况下切换,但是有一个淡入淡出的动画。

如果我将过渡设置为TRANSIT_FRAGMENT_FADE,淡入淡出动画会更短:

我正在使用 androidx 版本 1.6.0-alpha02kotlin 版本 1.4.32

谢谢。

FragmentTransactions 为片段 enteringexiting 事务设置动画。

show():显示一个之前隐藏的片段。这仅与已添加到容器中的片段相关。 Show 将使用 Fragment 最初进入容器时使用的 FragmentTransaction。

hide():隐藏现有片段。这仅与视图已添加到容器中的片段相关,因为这将导致视图被隐藏。隐藏将使用片段最初进入交易时设置的 FragmentTransaction。

在你调用 FragmentTransaction 的情况下,它没有设置动画,因为你没有进入或退出容器的片段,你正在使用隐藏和显示来显示你的片段,所以 FragmentTransaction 使用片段最初进入容器时的动画。

如果您想控制动画,我建议您使用 replace 而不是 show 和 hide`。

我发现了问题。

这是因为 onCreate 中设置的共享元素 Transition

sharedElementEnterTransition = TransitionInflater.from(context).inflateTransition(android.R.transition.move)

删除此行解决了问题。

但是我想知道在共享元素转换的情况下,我如何才能导航到另一个片段而不使动画消失...