J'ai une méthode dans la classe fragment. Je veux appeler cette méthode depuis l'activité principale mais je ne veux pas utiliser FragmentById (ou) FragmentByTag.
Ma méthode de fragment:
public void setItemFromDrawer(String sourceTag, String destTag) {
//dosomething
}
Comment appeler la méthode ci-dessus à partir de l'activité principale sans utiliser FragmentById (ou) FragmentByTag?
Créez d'abord une interface
public interface MyInterface
{
void myAction() ;
}
Votre fragment doit implémenter cette interface.
public MyFragment extends Fragment implements MyInterface
Dans votre activité, définissez un champ de type MyInterface:
private MyInterface listener ;
public void setListener(MyInterface listener)
{
this.listener = listener ;
}
Lors de la création et de l'ajout de votre fragment:
setListener(myFragment);
Enfin, lorsque la condition se produit que vous souhaitez appeler la méthode Fragment, appelez simplement:
listener.myAction() ; // this will call the implementation in your MyFragment class.
cela signifie que vous appelez une méthode de fragment
((YourFragmentClass) fragment).Yourmethod();
Pour mieux expliquer la réponse par ser5466222:
YourFragmentClass fragment = new YourFragmentClass();
((YourFragmentClass) fragment).yourmethod();
Dans Activity, utilisez quelque chose comme ceci où vous chargez votre fragment:
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(container, fragment);
transaction.addToBackStack(null); // if you want to store transaction
transaction.commit();
currentFragment = fragment; // currentFragment is global Fragment variable
Utilisez la ligne suivante où vous souhaitez appeler la méthode du fragment
currentFragment.setItemFromDrawer("sourceTag","destTag");