7

Ich habe eine Methode in der Fragmentklasse. Ich möchte diese Methode aus der Hauptaktivität aufrufen, aber ich möchte FragmentById (oder) FragmentByTag nicht verwenden.So rufen Sie die Fragmentmethode aus der Hauptaktivität auf

Mein Fragment Methode:

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

Wie aus Haupttätigkeit über Methode aufrufen, ohne FragmentById (oder) FragmentByTag?

+2

ein Fragment-Methode aufrufen, wenn Sie Fragment fragmentTransaction Fragment-Objekt speichern unter Verwendung laden und später Sie eine öffentliche Methode von diesem Objekt aufrufen kann –

+0

I didn‘ t versteh .. Kannst du irgendein Beispiel geben Code – hikoo

+0

möglich duplizieren von http://StackOverflow.com/Questions/10903077/calling-a-fragment-method-from-a-parent-activity?rq=1 – Jamil

Antwort

1

In Aktivität verwenden so etwas wie dieses, wo Sie Ihre Fragment laden:

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 

Verwenden folgende Zeile in dem Sie das Fragment wollen Methode aufrufen

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

currentFragment = Fragment; In dieser Zeile ist Fragment was? – hikoo

+0

das Fragment, das Sie laden. in dem Ihre Funktion implementiert –

17

Erstellen Sie zunächst eine Schnittstelle

public interface MyInterface 
{ 
    void myAction() ; 
} 

Ihr Fragment muss diese Schnittstelle implementieren.

public MyFragment extends Fragment implements MyInterface 

In Ihrer Aktivität definieren ein Feld vom Typ MyInterface:

private MyInterface listener ; 

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

Wenn Ihr Fragments Erstellen und Hinzufügen von ihm:

setListener(myFragment); 

Wenn schließlich die condtion passiert, dass Sie Möchten Sie die Fragment-Methode aufrufen, rufen Sie einfach folgende Nummer an:

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

((Fragment der YourFragment-Klasse)) .Your method();

its me arbeitete bilden

+5

Fragment bedeutete was? – hikoo

4

es bedeutet, dass Ihr

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

Was ist "Fragment" ???? –

Verwandte Themen