在动画交易期间,退出的碎片立即消失



我已经看到很多人描述了这种情况(例如(,但我不使用子片段。当我将动画添加到交易中时,当输入片段进入预期的输入动画时,退出的片段会立即消失。当我向后压时,同一件事发生了...退出的片段立即消失,原始片段以适当的pop Enter Animation进入。

我做错了什么?

我正在使用实现PreferenceFragmentCompat.OnPreferenceStartFragmentCallbackAppCompatActivity进行此操作,而我的活动的布局仅由framelayout组成。

override fun onPreferenceStartFragment(caller: PreferenceFragmentCompat, pref: Preference): Boolean {
    val fragment = supportFragmentManager.fragmentFactory.instantiate(
            classLoader,
            pref.fragment)
    supportFragmentManager.beginTransaction()
            .setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_left, R.anim.slide_out_right)
            .add(R.id.fragment_wrapper, fragment)
            .addToBackStack(null)
            .commit()
    return true
}

我所有的动画都是简单的,以相同的持续时间翻译动画,例如:

<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/decelerate_interpolator"
    android:fromXDelta="100%p" android:toXDelta="0"
    android:duration="@integer/fragment_transition_time"/>

我正在使用androidx.preference:1.1.0-alpha05

使用ObjectAnimator(DOCS(而不是TranslateAnimation

最新更新