overridependingtransition fragments example entre animations animaciones android android-fragments android-animation

android - fragments - customAnimation al llamar a popBackStack en un FragmentManager



overridependingtransition fragment (1)

En mi actividad, con el toque de un botón, sustituyo el fragmento actual por un nuevo fragmento utilizando una animación personalizada, como en este ejemplo.

@Override public boolean onOptionsItemSelected(MenuItem item) { // Handle presses on the action bar items switch (item.getItemId()) { case R.id.action_anomalie: Fragment contentFragment = getFragmentManager().findFragmentById(R.id.content); if(contentFragment instanceof AnomalieListFragment) { getFragmentManager().popBackStack(); return true; } else { FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out); anomalieFragment = new AnomalieListFragment(); ft.replace(R.id.content, anomalieFragment); ft.addToBackStack(null); ft.commit(); } ...

Sin embargo, al volver a abrir la pila no se muestra ninguna animación. ¿Hay alguna manera de especificar una animación personalizada como lo hacemos en FragmentTransaction con el método setCustomAnimations ?


Después de leer más la documentación, descubrí que el uso de this firma de setCustomAnimation permitía setCustomAnimation la animación al presionar el botón Atrás o al llamar a getFragmentManager().popBackStack();

Modifiqué mi código así

... FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out, android.R.animator.fade_in, android.R.animator.fade_out); anomalieFragment = new AnomalieListFragment(); ft.replace(R.id.content, anomalieFragment); ft.addToBackStack(null); ft.commit(); ...