2011-07-28 4 views
1

Je souhaite créer une pile de plusieurs fragments inclus dans la mise en page linéaire. Pour mettre ensemble de fragments à activty j'utiliser le code ci-dessous (R.id.content est LinearLayout):Backstack avec plusieurs fragments par mise en page

private void pushToBackStack(final Fragment... fragments) { 
    final FragmentManager fm = getSupportFragmentManager(); 

    final FragmentTransaction ft = fm.beginTransaction(); 

    for (int i = 0; i < fragments.length; i++) { 

     if (i == 0) { 
      ft.replace(R.id.content, fragments[i]); 
     } else { 
      ft.add(R.id.content, fragments[i]); 
     } 
    } 
    ft.addToBackStack(null); 
    ft.commit(); 
} 

quand j'appelle

pushToBackStack(f1, f2); 
pushToBackStack(f3, f4); 
pushToBackStack(f5, f6); 

il es f3, et f6 visibles f5 sur l'écran et après avoir appuyé sur le bouton Retour f2, f3, f4 sont affichés.

comportement attendu est f5, f6 -> Retour -> f3, f4 -> Back-> f1, f2

Répondre

1

Vous ne pouvez pas chaîner les appels de cette façon, vous auriez besoin d'appeler un commit par replace ou add

Questions connexes