7

Mam metodę w klasie fragmentów. Chcę wywołać tę metodę z głównej aktywności, ale nie chcę używać FragmentById (lub) FragmentByTag.Jak wywołać metodę fragmentów z głównej działalności

Moja metoda fragment:

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

Jak wywołać powyżej metody z działalności podstawowej bez użycia FragmentById (lub) FragmentByTag?

+2

podczas ładowania fragment używając fragmentTransaction zapisać obiekt fragment, a później można wywołać dowolną metodę publiczną z tego obiektu –

+0

Nie miałem” Rozumiem. Czy możesz podać przykładowy kod – hikoo

+0

możliwy duplikat http://stackoverflow.com/questions/10903077/calling-a-fragment-method-from-a-parent-activity?rq=1 – Jamil

Odpowiedz

1

W działalności użyć czegoś takiego, gdzie załadować swój 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 

Użyj następujących linii do której chcesz wywołać metodę fragment za

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

currentFragment = fragment; W tym fragmencie linii jest co? – hikoo

+0

fragment, który ładujesz. w której funkcja zaimplementował fragment –

17

Najpierw utwórz interfejs

public interface MyInterface 
{ 
    void myAction() ; 
} 

Twój fragment musi implementować ten interfejs.

public MyFragment extends Fragment implements MyInterface 

W swojej działalności zdefiniować pole typu MyInterface:

private MyInterface listener ; 

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

Podczas tworzenia fragmentu i dodanie go:

setListener(myFragment); 

Wreszcie, gdy Warunek zdarza się, że chcesz zadzwonić do metody Fragment, po prostu zadzwoń:

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

(Fragment (klasa YourFragment)). Twoja metoda();

jego pracował tworzą mi

+5

co? – hikoo

4

to oznacza, że ​​wywołanie metody fragment

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

co to jest "fragment" ???? –

Powiązane problemy