2014-08-28 4 views
16

Nella mia attività, con il semplice tocco di un pulsante, sostituisco il frammento corrente con un nuovo frammento utilizzando un'animazione personalizzata, come in questo esempio.customAnimation quando si chiama popBackStack su un FragmentManager

@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(); 
      } 

    ... 

Tuttavia, popping back the stack non mostra alcuna animazione. C'è un modo per specificare un'animazione personalizzata come facciamo in un FragmentTransaction con il metodo setCustomAnimations?

risposta

53

Dopo ulteriore lettura della documentazione, ho trovato che l'uso di this firma del setCustomAnimation ha permesso l'animazione da riprodurre quando si preme il tasto indietro o chiamando getFragmentManager().popBackStack();

ho modificato il mio codice come questo

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

salvata io un sacco di tempo. Grazie !! – Yahel

+7

Grazie a questo funziona alla grande. Ciò che fa funzionare questo codice è il metodo 'setCustomAnimations' chiamato con il sovraccarico di 4 parametri. Il 2 param one non si anima su 'popBackStack'. – Francois

+1

Nota, .setCustomAnimations deve essere prima .replace. – Codeversed