7

J'ai une méthode dans la classe fragment. Je veux appeler cette méthode de l'activité principale mais je ne veux pas utiliser FragmentById (ou) FragmentByTag.Comment appeler la méthode du fragment de l'activité principale

Ma méthode fragment:

public void setItemFromDrawer(String sourceTag, String destTag) { 
    //dosomething 
} 

Comment appeler méthode ci-dessus de l'activité principale sans utiliser FragmentById (ou) FragmentByTag?

+2

lorsque vous fragment chargez à l'aide fragmentTransaction sauver objet fragment et plus tard vous pouvez appeler une méthode publique de cet objet –

+0

je n » t comprendre .. Pouvez-vous donner un exemple de code – hikoo

+0

copie possible de http://stackoverflow.com/questions/10903077/calling-a-fragment-method-from-a-parent-activity?rq=1 – Jamil

Répondre

1

En activité utiliser quelque chose comme ça 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 voulez appeler la méthode de fragment

currentFragment.setItemFromDrawer("sourceTag","destTag"); 
+0

currentFragment = fragment; Dans ce fragment de ligne est quoi? – hikoo

+0

le fragment que vous chargez. dans lequel votre fonction implémentée –

17

d'abord créer une interface

public interface MyInterface 
{ 
    void myAction() ; 
} 

Votre fragment doit implémenter cette interface.

public MyFragment extends Fragment implements MyInterface 

Dans votre activité, définir un champ de type MyInterface:

private MyInterface listener ; 

    public void setListener(MyInterface listener) 
    { 
    this.listener = listener ; 
    } 

Lorsque vous créez votre fragment et ajoutant:

setListener(myFragment); 

Enfin, lorsque le condtion arrive que vous voulez appeler la méthode Fragment, il suffit d'appeler:

listener.myAction() ; // this will call the implementation in your MyFragment class. 
-3

(fragment (YourFragment Class)) .Votre méthode();

ses produits travaillés me former

+5

fragment voulait dire quoi? – hikoo

4

cela signifie que votre appel d'une méthode de fragment

((YourFragmentClass) fragment).Yourmethod(); 
+0

ce qui est «fragment» ???? –