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();
...