0

Selon les tutoriels que j'ai lus, la méthode addToBackStack (null) est la bonne façon de revenir au fragment ou à l'activité précédente chargée. Mais pour ma part, le addToBackStack() est manquant sur l'objet ft qui contient la classe FragmentManager. Voici mon code.La méthode addToBackStack (null) n'est pas dans la propriété de la classe FragmentManager. Est-ce la bonne façon de revenir au fragment/activité précédent?

conteach.setOnClickListener(new OnClickListener() { 
        public void onClick(View v) { 
         SpecificArticleFragment spcf = new SpecificArticleFragment(); 
         Bundle args = new Bundle(); 
         args.putString("art_id", v.getTag().toString()); 
         spcf.setArguments(args); 

         FragmentManager ft = getFragmentManager(); 
         ft.beginTransaction().replace(R.id.content_frame, spcf).commit(); 
        //I know that I should put the ft.addToBackStack(null) code here but the addToBackStack(null) method does not exist on the ft object 
        } 
       }); 

Quoi qu'il en soit, selon ma compréhension si les charges de fragments SpecificArticleFragment, je peux revenir au fragment existant où le code ci-dessus était situé. Quelle est la meilleure façon de résoudre ce problème?

Répondre

1

vous utilisez gestionnaire de Fragment mais addtobackStack est un metod de FragmentTransaction classe. voir le code ci-dessous.

// 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(); 
+0

Merci homme! Ça fonctionne maintenant, :) –

1
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentTransaction; 

    Fragment fragment= new Example(); 
    FragmentManager fm = getFragmentManager(); 
    FragmentTransaction ft = fm.beginTransaction(); 
    ft.replace(R.id.main_fragment, fragment, fragment.getClass().getName()); 
    ft.addToBackStack(fragment.getClass().getName()); 
    ft.commit();