Dans mon activité, d'une simple pression sur un bouton, je remplace le fragment actuel par un nouveau fragment à l'aide d'une animation personnalisée, comme dans cet exemple.
@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();
}
...
Cependant, remonter la pile ne montre aucune animation. Existe-t-il un moyen de spécifier une animation personnalisée comme nous le faisons dans une FragmentTransaction avec la méthode setCustomAnimations ?
Après avoir lu la documentation, j'ai trouvé que l'utilisation de this signature de setCustomAnimation
permettait de lire l'animation en appuyant sur le bouton de retour ou en appelant getFragmentManager().popBackStack();
J'ai modifié mon code comme ceci
...
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();
...