Comment ouvrir un nouveau fragment à partir d'un autre fragment

J'ai essayé de faire une navigation entre les fragments. J'ai la NewFragment.java avec le nouveau fragment de travail. Mon problème est:

Comment faire pour que cet onClickListener exécute NewFragment.java correctement?

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

        Intent i = new Intent(getActivity(), NewFragment.class);
        startActivity(i);

       }});

FYI: c'est de l'intérieur d'un fragment (Je ne sais pas si cela compte).

47
demandé sur HultBullt 2014-01-09 22:56:42

6 réponses

Ajoutez le code suivant dans votre fonction d'écoute de clic,

     NextFragment nextFrag= new NextFragment();
     getActivity().getSupportFragmentManager().beginTransaction()
     .replace(R.id.Layout_container, nextFrag,"findThisFragment")
     .addToBackStack(null)
     .commit();
90
répondu Narendra 2017-08-21 13:38:52

C'est un code Plus décrit du code de @ Narendra,

Vous avez D'abord besoin d'une instance du 2ème fragment. Ensuite, vous devriez avoir des objets de FragmentManager et FragmentTransaction. Le code complet est comme ci-dessous,

Fragment2 fragment2=new Fragment2();
FragmentManager fragmentManager=getActivity().getFragmentManager();
FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.content_main,fragment2,"tag");
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();

J'espère que cela fonctionnera. Parfois, vous pouvez obtenir getSupportFragmentManager () au lieu de getFragmentManager ().

5
répondu Nipuna Dilhara 2017-06-12 05:43:32

Vous devez créer une fonction à l'intérieur de l'activité pour ouvrir un nouveau fragment et passer la référence d'activité au fragment et sur un événement à l'intérieur du fragment appeler cette fonction.

3
répondu vipul mittal 2014-01-09 19:25:58
@Override
public void onListItemClick(ListView l, View v, int pos, long id) {
    super.onListItemClick(l, v, pos, id);
    UserResult nextFrag= new UserResult();
    this.getFragmentManager().beginTransaction()
    .replace(R.id.content_frame, nextFrag, null)
    .addToBackStack(null)
    .commit();  
}
1
répondu Vinod Joshi 2015-06-01 05:11:19

Utilisez ceci,

            AppCompatActivity activity = (AppCompatActivity) view.getContext();
            Fragment myFragment = new MyFragment();
            activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, myFragment).addToBackStack(null).commit();
0
répondu Parinda Rajapaksha 2017-11-02 06:43:19
 Fragment fr = new Fragment_class();
             FragmentManager fm = getFragmentManager();
            FragmentTransaction fragmentTransaction = fm.beginTransaction();
            fragmentTransaction.add(R.id.viewpagerId, fr);
            fragmentTransaction.commit();

Juste pour être précis, R.id.viewpagerId est créé dans votre disposition de classe actuelle, lors de l'appel, le nouveau fragment est automatiquement infiltré.

0
répondu Mbanda 2018-06-04 01:00:12