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?

  • Une autre activité survient et couvre la moitié de la taille de l'écran
  • Transition d'élément partagé Android: transformer une ImageView d'un cercle en rectangle et revenir
  • Android Transition framework et les données du réseau
  • Mettre à jour l'activité source avant la transition de sortie
  • Transition d'activité non réalisée (Lollipop)
  • Démarrer l'activité à partir de Fragment en utilisant Transition (support API 21)
  • La transition de scène avec des éléments de héros Throws Layer dépasse max. Dimensions supportées par le GPU
  • La migration d'explosion Android ne fait pas exploser GridView
  • 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.