web-dev-qa-db-fra.com

Comment appeler la méthode des fragments à partir de l'activité principale

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?

12
hikoo

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.
28
Farhad Faghihi

cela signifie que vous appelez une méthode de fragment

((YourFragmentClass) fragment).Yourmethod();
5
user5466222

Pour mieux expliquer la réponse par ser5466222:

YourFragmentClass fragment = new YourFragmentClass();
((YourFragmentClass) fragment).yourmethod();
4
Sif

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");
2
Khizar Hayat