7

Tôi có phương pháp trong lớp phân đoạn. Tôi muốn gọi phương thức đó từ hoạt động chính nhưng tôi không muốn sử dụng FragmentById (hoặc) FragmentByTag.Cách gọi phương thức phân đoạn từ hoạt động chính

phương pháp mảnh của tôi:

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

Làm thế nào để gọi phương pháp nêu trên từ hoạt động chính mà không sử dụng FragmentById (hoặc) FragmentByTag?

+2

khi bạn tải đoạn sử dụng fragmentTransaction lưu đối tượng mảnh và sau đó bạn có thể gọi bất kỳ phương pháp nào từ đối tượng –

+0

tôi didn' t hiểu .. Bạn có thể cung cấp bất kỳ mã ví dụ nào – hikoo

+0

có thể trùng lặp của http://stackoverflow.com/questions/10903077/calling-a-fragment-method-from-a-parent-activity?rq=1 – Jamil

Trả lời

1

Trong Hoạt động sử dụng một cái gì đó như thế này, nơi bạn tải đoạn của bạn:

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 

Sử dụng sau dòng nơi bạn muốn gọi phương thức đoạn của

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

currentFragment = fragment; Trong đoạn đường này là gì? – hikoo

+0

đoạn bạn đang tải. trong đó chức năng của bạn thực hiện –

17

Đầu tiên tạo ra một giao diện

public interface MyInterface 
{ 
    void myAction() ; 
} 

Đoạn của bạn phải triển khai giao diện này.

public MyFragment extends Fragment implements MyInterface 

Trong hoạt động của bạn, định nghĩa một lĩnh vực loại MyInterface:

private MyInterface listener ; 

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

Khi tạo mảnh của bạn và thêm nó:

setListener(myFragment); 

Cuối cùng, khi condtion xảy ra mà bạn muốn gọi phương thức Phân đoạn, chỉ cần gọi:

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

((lớp Phân loại của bạn)). Phương thức của bạn();

làm việc của nó tạo cho tôi

+5

mảnh có nghĩa là gì? – hikoo

4

nó có nghĩa là kêu gọi của bạn một phương pháp đoạn

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

'fragment' là gì ???? –

Các vấn đề liên quan