2013-09-04 5 views
3

Je suis en train de fragments dans une seule activité dans la séquence suivante.Fragment Android Retour pile causant problème filaire

fragment 1 -> fragment 2 -> fragment 3 -> fragment 4

J'utilise ci-dessous code pour la transaction de fragment.

mFragmentTransaction=mFragmentManager.beginTransaction(); 
mFragmentTransaction.replace(R.id.fragment_container, mFragment,fragmentname); 
mFragmentTransaction.addToBackStack(tag); 
mFragmentTransaction.commit(); 

Ce que je veux faire est lorsque l'utilisateur est sur le fragment 3 ou 4 puis appuyez retour si l'utilisateur est le fragment 4 fragmenter puis 4 -> fragment 3 -> fragment 1. si l'utilisateur est sur le fragment 3 puis le fragment 3 -> fragment 1.

J'utilise le code suivant dans une presse à l'envers.

if(mFragmentManager.findFragmentByTag("fragment 3")!=null){ 


      mFragmentManager.popBackStack("fragment 2",FragmentManager.POP_BACK_STACK_INCLUSIVE); 



     }else{ 
      super.onBackPressed(); 
     } 

Mais cela provoque un problème de câblage sur la presse arrière comme suit.

fragment 4 -> fragment 1 au lieu du fragment 4 -> fragment 3 -> fragment 1. fragment 3 -> 1 fragment

s'il vous plaît aider.

Répondre

4

Vous devez avoir une autre instruction if imbriquée. Vous avez celui de vérifier si le fragment est nul ou non, mais vous devez ensuite vérifier si ce fragment est visible.

if(mFragmentManager.findFragmentByTag("fragment 3")!=null){ 
    if(mFragmentManager.findFragmentByTag("fragment 3").isVisible()){ 
     mFragmentManager.popBackStack("fragment 2",FragmentManager.POP_BACK_STACK_INCLUSIVE); 
    } 
} 
else{ 
     super.onBackPressed(); 
} 
+1

Merci beaucoup pour la réponse. Vous avez fait ma journée. – Bug

Questions connexes