Я видел много людей, описывающих, как это происходит с дочерними фрагментами ( например ), но я не использую дочерние фрагменты.Когда я добавляю анимации к транзакции, выходящий фрагмент мгновенно исчезает, а входящий фрагмент входит с ожидаемой входящей анимацией.Когда я нажимаю назад, происходит то же самое ... выходящий фрагмент мгновенно исчезает, и исходный фрагмент входит с соответствующей анимацией поп-ввода.
Что я сделал не так?
ЯДелая это в AppCompatActivity
, который реализует PreferenceFragmentCompat.OnPreferenceStartFragmentCallback
, и мой макет для действия состоит исключительно из 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
.