Imbriqués les fragments de disparaître au cours de la transition de l'animation

Voici le scénario: Activité contient fragment A, qui à son tour utilise getChildFragmentManager() pour ajouter des fragments A1 et A2 dans son onCreate comme suit:

getChildFragmentManager()
  .beginTransaction()
  .replace(R.id.fragmentOneHolder, new FragmentA1())
  .replace(R.id.fragmentTwoHolder, new FragmentA2())
  .commit()

Jusqu'ici tout va bien, tout se déroule comme prévu.

Nous puis exécutez la transaction suivante dans l'Activité:

getSupportFragmentManager()
  .beginTransaction()
  .setCustomAnimations(anim1, anim2, anim1, anim2)
  .replace(R.id.fragmentHolder, new FragmentB())
  .addToBackStack(null)
  .commit()

Pendant la transition, la enter animations pour fragment B s'exécute correctement, mais fragments A1 et A2 disparaître entièrement. Lorsque nous revenions de la transaction avec le bouton de Retour, ils s'initialiser correctement et afficher normalement au cours de la popEnter animation.

Dans mon bref essai, il a en plus étrange - si j'ai mis les animations pour les enfants fragments (voir ci-dessous), le exit animation fonctionne par intermittence lorsque nous ajoutons fragment B

getChildFragmentManager()
  .beginTransaction()
  .setCustomAnimations(enter, exit)
  .replace(R.id.fragmentOneHolder, new FragmentA1())
  .replace(R.id.fragmentTwoHolder, new FragmentA2())
  .commit()

L'effet que je veux réaliser est simple: je veux les exit (ou devrait-il être popExit?) animation sur fragment A (anim2) d'exécuter, de l'animation de l'ensemble du récipient, y compris son imbriqués les enfants.

Est-il un moyen d'y parvenir?

Modifier: s'il vous Plaît trouver un cas de test ici

Edit2: Grâce à @StevenByle pour me pousser à continuer d'essayer avec la statique des animations. Apparemment, vous pouvez définir des animations sur les per-op (et non globale pour l'ensemble de la transaction), ce qui signifie que les enfants peuvent avoir une durée indéterminée statique de l'animation de jeu, alors que leurs parents peuvent avoir une animation différente et le tout peut être engagé dans une transaction. Voir la discussion ci-dessous et le mise à jour de cas de test du projet.

Qu'est-ce que R.id.fragmentHolder à l'égard d'Une, A1, A2, etc?
fragmentHolder est un id dans l'activité de mise en page, fragment{Un,Deux}Titulaire sont dans Un fragment de la mise en page. Tous les trois sont distinctes. Fragment A été initialement ajouté dans fragmentHolder (j'. e., fragment B est le remplacement du fragment A).
J'ai créé un projet exemple ici: github.com/BurntBrunch/NestedFragmentsAnimationsTest , il y a aussi un apk inclus dans le référentiel. C'est vraiment un bug gênant et je suis à la recherche d'un moyen de le contourner (en supposant qu'il n'est pas dans mon code).
Je sais un peu plus sur ce problème maintenant. La raison pour laquelle les fragments de disparaître est parce que les enfants manipulent les événements de cycle de vie avant que le parent. En essence, A1 et A2 sont supprimés avant et depuis ils n'ont pas les animations, elles disparaissent brusquement. Une façon d'atténuer quelque peu ce qui est explicitement supprimer A1 et A2 dans la transaction qui remplace A. de Cette façon, ils s'animent lors de leur sortie, mais leur vitesse d'animation est au carré, depuis le conteneur parent est également l'animation. Une solution qui ne produit pas cet artefact serait appréciée.
Le changement(en remplacement du démarreur fragment) que vous mentionnez dans la question est le réel que vous voulez faire ou c'est juste un exemple? Vous pourrez appeler le changeFragment méthode qu'une seule fois?

OriginalL'auteur Delyan | 2013-02-15