Truyền dữ liệu giữa 2 fragment trong android

Truyền dữ liệu giữa 2 fragment trong android
5 (100%) 5 votes

Bối cảnh

Ngữ cảnh là có 1 Activity chứa 2 fragment, 1 cái bên trên và 1 cái bên dưới, cả 2 fragment được tạo ra trong xml (không phải bằng java code). Fragment 1 chứa 1 cái input và 1 cái nút, người dùng sẽ nhập vào input và khi click nút thì sẽ setText cho TextView ở Fragment 2.

Tư tưởng

Để truyền dữ liệu giữa 2 fragment ta cần làm như sau: Fragment 1 truyền cho  Activity, sau đó Activity truyền cho Fragment 2

Tại sao phải làm thế? Vì tính chất của activity và fragment. Không phải fragment 2 kia lúc nào cũng tồn tại trong host activity vì vậy ta phải chắc chắn fragment 2 tồn tại thì mới truyền.

Cách làm

Tạo 1 Interface sau đó bắt Activity chính lắng nghe sự kiện từ Interface đó, sau đó ở Fragment thứ nhất gọi hàm trong Interface và truyền dữ liệu cho hàm bên Activity, từ Activity tạo đối tượng Fragment 2 và gọi hàm trong Fragment setText cho nó,

Chi tiết Code

Tạo Interface CommunicationInterface.java

Tạo Activity CommunicationActivity.java

Implement cái interface mà đã nói bên trên sau đó override hàm onClickTopFragment  bắt buộc. Ở đây tạo luôn một đối tượng Fragment muốn gửi dữ lệu đến.

Sponsored by dotrinh

Download  Free Premium 1200 Japanese Phrase  App for Android

Tạo Fragmetn 1 SubTop.java

Override hàm onAttach để kiểm tra xem cái Activity hện tại đã implement cái interface kia hay chưa.

Cùng với đó xử lí nút khi click và gọi hàm onClickTopFragment cho Activity nghe thấy.

Tao Fragment 2 SubBottom.java

Bên Fragment nà chỉ việc setText thôi.

Tham khảo thêm trên Stackoverflow tại link này

Ngoài ra:

Khi nào dùng getTargetFragment và setTargetFragment? Khi có các fragment chồng nhau như trường hợp dùng dialogFragment.

Các bài viết không xem thì tiếc:

Chia sẻ là sexy

Đô Trịnh

Một lập trình viên vui vẻ, hòa đồng, luôn sống tích cực và anh ấy quay tay khỏe và khéo trong môn bi lắc :)

Bình luận qua khung của website

1 Bình luận trong bài "Truyền dữ liệu giữa 2 fragment trong android"

Nhận thông báo:
avatar
Sắp xếp theo::   Mới nhất | Cũ nhất | Thích nhiều nhất
andruino
Khách đến chơi nhà

Thank guy!

wpDiscuz