замена фрагментов путем скрытия и отображения с переходом слайдов приводит к исчезновению обоих

Я пытаюсь анимировать переход между парой фрагментов, используя transaction.show и transaction.hide для замены фрагментов. Я думал, что это будет проще, чем использовать replace, поскольку я понимаю, что это создает новые фрагменты.

(Фрагменты будут повторно использоваться, возможно, более сотни раз, что приведет к высокому использованию памяти обратного стека, и управление обратным стеком будет проблемой, когда у меня все равно есть база данных, сохраняющая всю информацию о фрагментах)

Когда я использую

transaction.setCustomAnimations(R.animator.slide_out_right, R.animator.slide_in_left)

чтобы анимировать переход (или его обратный аналог), анимация работает, но после перехода фрагмент пропадает.

Мои анимации перехода определены в XML, как показано ниже, на основе приведенного в эта тема.

<?xml version="1.0" encoding="utf-8"?>
<set> 
    <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" 
    android:propertyName="x"
    android:valueType="floatType"
    android:valueFrom="0"
    android:valueTo="1280"
    android:duration="500"
    />
</set>
  • Я не использую библиотеку поддержки.
  • Я использую один макет кадра для обоих фрагментов, потому что думал, что так будет проще.
  • Проблема по своему характеру аналогична проблеме этот вопрос, но для каждого фрагмента используется 2 макета кадра, и проблема возникает только тогда, когда 2 перехода происходят в течение времени анимации 300 мс. Автор нашел обходной путь, заключающийся в использовании AnimatorSet в каждом макете. Как новичок в Android, я не уверен, что он имеет в виду и как я буду это делать.

Есть идеи, где я ошибаюсь? Есть ли другой способ анимировать такой простой переход фрагмента, как, кажется, сделал человек выше? Может ли это быть ошибкой? Спасибо.


person nme32    schedule 11.04.2013    source источник