0

La transition d'éléments partagés ne fonctionne pas en fragments lors de l'exécution de FragmentTransaction.add() avec la dernière version d'appcompat tout en fonctionnant correctement avec(). Lorsque je rétrograde appcompat à la version v7: 23.1 Son fonctionnement Cela fonctionne. Je pourrais trouver que le problème est lié à la version compatible d'Appcompact, mais je n'ai pas encore trouvé de solution.La transition d'élément partagé ne fonctionne pas avec FragmentTransaction.add() de la version de la bibliothèque prise en charge par appcompat v7: 23.2.0

Le code que je utilise pour la transition est

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 

     // set transitions 
     startFragement.setSharedElementReturnTransition(TransitionInflater.from(
       activity).inflateTransition(R.transition.change_image_trans)); 
     startFragement.setExitTransition(TransitionInflater.from(
       activity).inflateTransition(android.R.transition.fade)); 

     endFragment.setSharedElementEnterTransition(TransitionInflater.from(
       activity).inflateTransition(R.transition.change_image_trans)); 
     endFragment.setEnterTransition(TransitionInflater.from(
       activity).inflateTransition(android.R.transition.fade)); 

     // send bunddle string of transition_name in endfragment 
     /*Bundle bundle = new Bundle(); 
     bundle.putString(GistConstants.TRANSITION_NAME, transition_name); 
     endFragment.setArguments(bundle);*/ 

     FragmentTransaction fragmentTransaction = ((AppCompatActivity)activity).getSupportFragmentManager().beginTransaction(); 

     Fragment currentFragment = ((FragmentActivity)activity).getSupportFragmentManager().findFragmentById(R.id.main_content); 

     if(currentFragment!= null) { 

      fragmentTransaction.hide(currentFragment); 
     } 

     if(isAddToStack){ 
      fragmentTransaction.addToBackStack(endFragment.getClass().getName()); 
     } 

     fragmentTransaction.addSharedElement(transitionImageView, transition_name); 

     fragmentTransaction.add(R.id.main_content, endFragment, endFragment.getClass().getName()); 
     //fragmentTransaction.add(contentId, endFragment,endFragment.getClass().getName()); 
     // fragmentTransaction.replace(R.id.main_content, endFragment); 

     fragmentTransaction.commitAllowingStateLoss(); 

    } else { 

     switchFragmentAdd(activity, endFragment, isAddToStack, isAnimate); 
    } 

Répondre

0

Il travaille dans v7: 25.1.1 mais la transition de retour ne fonctionne pas:

startFragement.setSharedElementReturnTransition(TransitionInflater.from(
       activity).inflateTransition(R.transition.change_image_trans)