2016-08-15 2 views
1

Lorsque je clique sur l'icône de retour dans la mise en page, alors il va au fragment précédent, mais il ne va pas au fragment qu'il a été tué. Quelle est la solution pour cela?
J'utilise finish() et backstack mais elle ne fonctionne pour moiProblème dans Fragments dans android

back.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

       android.support.v4.app.Fragment onlineFragments = new OnlineFragments(); 
       android.support.v4.app.FragmentManager fragmentManagerprofile = getActivity().getSupportFragmentManager(); 
       android.support.v4.app.FragmentTransaction fragmentprofileTransaction = fragmentManagerprofile.beginTransaction(); 
       fragmentprofileTransaction.replace(R.id.background_fragment, onlineFragments); 
       fragmentprofileTransaction.commit(); 
     } 
    }); 

Fragment A

 case R.id.recharge: 
      HomeActvity.toolbar.setVisibility(View.GONE); 
      android.support.v4.app.Fragment Recharge = new Prepaid_recharge(); 
      android.support.v4.app.FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); 
      android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
      fragmentTransaction.replace(R.id.containerView, Recharge); 
      fragmentTransaction.commit(); 
      break; 
+0

Il va au fragment précédent, mais ne vont pas à fragmenter tué? Plus de clarté s'il vous plaît –

+0

signifie qu'il va à l'écran d'accueil dans le téléphone comme nous en utilisant la finition() –

+0

Fragment clique alors Fragment B Ouvre.Quand je suis cliquez sur Fragment B, il va à Fragment A, Voici comment il devrait fonctionner na? Qu'est-ce que vous essayez réellement d'atteindre? –

Répondre

0

J'utilise ce code pour ajouter et supprimer le fragment. Dans le cas où je n'ai pas besoin que ce fragment soit dans la pile arrière, j'envoie la valeur booléenne comme fausse. Faire cela lorsque vous appuyez sur le bouton Retour de la barre d'outils Il ouvre l'activité correcte

public static void changeFragment (MyActivity activity, Fragment fragment, int fragmentContainer, boolean addToBackStack){ 

     FragmentManager fragmentManager = activity.getSupportFragmentManager(); 
     FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
     fragmentTransaction.replace(fragmentContainer, fragment); 

     /*here we keep track of fragments and avoiding last blank fragment by passing true*/ 
     if(addToBackStack){ 
      fragmentTransaction.addToBackStack(null); 
     } 
     fragmentTransaction.commit(); 
    } 
2

Chaque fois que vous faites des transactions entre les fragments et que vous souhaitez revenir sur le fragment précédent (s) (bouton Back), dans la transaction, vous devez ajouter cette transaction au backStack avant de commettre:

docs Android:

« avant d'appeler commit(), cependant, vous voudrez peut-être appeler addToB ackStack(), afin d'ajouter la transaction à une pile arrière de transactions fragmentées. Cette pile arrière est gérée par l'activité et permet à l'utilisateur de revenir à l'état du fragment précédent en appuyant sur le bouton Précédent. "

https://developer.android.com/guide/components/fragments.html#Transactions

// Create new fragment and transaction 
Fragment newFragment = new ExampleFragment(); 
FragmentTransaction transaction = getFragmentManager().beginTransaction(); 

// Replace whatever is in the fragment_container view with this fragment, 
// and add the transaction to the back stack 
transaction.replace(R.id.fragment_container, newFragment); 
transaction.addToBackStack(null); 

// Commit the transaction 
transaction.commit();