Android Lollipop – setentertransition () pour que le fragment ne fonctionne pas correctement à la sortie

En remplaçant le fragment, j'utilise l'animation Slide disponible pour la version Android de la sucette. Cela fonctionne comme prévu pour ce remplacement particulier, mais en appuyant sur le bouton de retour, il retourne d'abord le fragment de courant et ensuite l'inverse de l'animation d'entrée (diapositive) est exécuté.

private void replaceContentFrameByFragment(Fragment replaceBy, String replaceByFragmentTag) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Slide slide = new Slide(Gravity.BOTTOM); slide.setDuration(1000); replaceBy.setEnterTransition(slide); } FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); fragmentTransaction.replace(R.id.content_frame, replaceBy, replaceByFragmentTag); fragmentTransaction.addToBackStack(null); fragmentTransaction.commitAllowingStateLoss(); } 

Alors, comment forcer le fragment à faire un retour arrière seulement après que l'animation inverse de la diapositive est terminée? J'ai remarqué que l'activité a la méthode finishAfterTransition () fournie. Existe-t-il quelque chose de similaire pour le frgament?

  • Transition d'élément partagé Android, mauvaise position de départ
  • Faire animer l'activité de haut en bas
  • OnClick ne fonctionne pas après la transition
  • CollapsingToolbarLayout titre comme transition d'élément partagé
  • Comment implémenter un backstack lors de l'utilisation de KitKat Transitions Framework
  • Partager l'image élément transition afficher une taille incorrecte
  • Comment être averti quand une transition entre les activités a été terminée?
  • Est-ce que quelqu'un sait comment utiliser onActivityReenter correctement?
  • 2 Solutions collect form web for “Android Lollipop – setentertransition () pour que le fragment ne fonctionne pas correctement à la sortie”

    J'avais le même problème avec à peu près le même motif et j'ai pu le contourner en publiant ma transition de fragments:

     new Handler().post(new Runnable() { @Override public void run() { page.setEnterTransition(new Slide()); getFragmentManager() .beginTransaction() .replace(R.id.root_layout, page, "current") .commit(); } }); 

    Je ne sais pas pourquoi cela résout le problème (ou si c'est la solution correcte absolue), mais cela a fonctionné pour moi.

    J'ai eu le même problème, surReturn from Fragment B -> A, Fragment B semblent faire une transition de diapositive supplémentaire. Pour le contourner, j'ai mis une transition de fondu pour setReturnTransition() d'un temps plus court que la diapositive qui semble assez bonne (puisqu'elle se dissout dans le fragment précédent). Le code pour ceci est:

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Slide slideRight = new Slide(Gravity.RIGHT); slideRight.setDuration(200); fragment.setEnterTransition(slideRight); Fade fade = new Fade(); fade.setDuration(100); fragment.setReturnTransition(fade); } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.