J'ai essayé de faire une navigation entre les fragments. J'ai le NewFragment.Java
avec le nouveau fragment qui fonctionne. Mon problème est:
Comment puis-je faire cela onClickListener
exécuter 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 ça compte).
Ajouter 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();
La chaîne "findThisFragment"
peut être utilisé pour retrouver le fragment ultérieurement, si besoin est.
C'est le code le plus décrit du code de @ Narendra,
Vous avez d’abord besoin d’une instance du 2e 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 ().
Vous devez créer une fonction dans l’activité pour ouvrir un nouveau fragment et transmettre la référence d’activité au fragment. Pour certains événements dans le fragment, appelez cette fonction.
@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();
}
Utilisez ceci,
AppCompatActivity activity = (AppCompatActivity) view.getContext();
Fragment myFragment = new MyFragment();
activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, myFragment).addToBackStack(null).commit();
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 présentation de classe actuelle. Lors de l'appel, le nouveau fragment est automatiquement infiltré.
Ajout à la solution @Narendra ...
IMPORTANT: lorsque vous utilisez des fragments, la navigation étant étroitement liée à l'activité de l'hôte, vous ne pouvez pas simplement passer d'un fragment à un autre sans implémenter cette classe de fragment dans Host Activity.
Échantillon:
public class MyHostActivity extends AppCompatActivity implements MyFragmentOne.OnFragmentInteractionListener {
Vérifiez également que l’activité de votre hôte possède la fonction de remplacement suivante:
@Override public void onFragmentInteraction(Uri uri) {}
J'espère que cela vous aidera ...