Android từ cơ bản cho đến nâng cao – Cách truyền dữ liệu giữa hai Fragment

Chào các bạn, chúng ta lại gặp nhau trong loạt bài “Android từ cơ bản cho đến nâng cao rồi” 🙂 Trong bài này, mình sẽ hướng dẫn các bạn cách truyền dữ liệu giữa hai Fragment với nhau nhé! Có nhìu cách để truyền dữ liệu qua lại giữa hai đối tượng này, trong đây mình sẽ đưa ra cách mà mình hay sử dụng nhất: Fragment A -> Activity -> Fragment B.

Hỏi: Sao không truyền thẳng từ Fragment sang Fragment luôn mà đi lòng vòng cho mệt vậy?

Đáp: Vì đối với Fragmet bạn không chắc nó luôn luôn được khởi tạo, ở đây mình lấy ví dụ trên điện thoại và máy tính bảng như hình dưới đây:

android

Như các bạn có thể thấy, đối với máy tính bảng, Fragment A và B tồn tại song song nhưng ở điện thoại thì không như vậy. Vì vậy chúng ta không chắc ở thời điểm Fragment A tồn tại thì Fragment B có được attach vào Activity chưa -> tránh giao tiếp trực tiếp giữa A và B.

Bước 1: Từ Fragment A -> Activity

Đầu tiên các bạn khai báo một Interface mà các bạn dùng nó để giao tiếp với ActivityFragment đó được attach:

Trong Fragment A của các bạn khai báo hàm onAttach:

Hàm onAttach này sẽ được chạy trước hàm onCreate() nên nó sẽ kiểm tra xem activity của bạn đã implement interface đó chưa, nếu đã implement rồi thì nó sẽ khởi tạo giá trị của biến listener, nếu chưa thì sẽ quăng ra Exception 🙂

Tiếp đến bạn gọi hàm onDataSelected trong interface và truyền vào giá trị bạn muốn chuyển:

Và cuối cùng trong Activity và bạn đã implement Interface này trước đó, nó sẽ nhận được giá trị này của Fragment truyền qua

Vậy là các bạn đã có thể truyền giá trị từ Fragment sang Activity rồi đấy.

Bước 2: Từ Activity -> Fragment B

Trong hàm onDataSelected các bạn đuợc implement ở Activity, các bạn triển khai như sau

Như vậy dữ liệu đã đuợc truyền qua Fragment B. H chúng ta chỉ cần lấy nó ra ở Fragment B và sử dụng nó.

Vậy là chúng ta đã có thể truyền dữ liệu giữa 2 Fragment một cách an toàn nhất rồi đúng không nào. Hẹn gặp lại các bạn tại những bài sau trong series “Android từ cơ bản cho đến nâng cao” nhé.

Spread the love
  •  
  •  
  •  
  •  
  •  

Leave a Reply

9 Comments on "Android từ cơ bản cho đến nâng cao – Cách truyền dữ liệu giữa hai Fragment"

Notify of
avatar
Sort by:   newest | oldest | most voted
Khoa Tran
Member

Good but you should format your code 😀

Hai
Guest

Ở đây thấy bạn tạo mới Fragment B, nhỡ mình đang làm việc với fragment B và cần lưu trạng thái của nó thì sao hả bạn??

Được
Guest

Thì tạo một SingleTon cho thằng FragmenttB để giữ trạng thái của nó và sau đó getInstance bên kia để thực hiện truyên bundle.

trackback

[…] Nguồn: appConus […]

Hải
Guest

Ăn cắp bài người khác còn không biết ghi nguồn. Không biết thể loại văn hóa gì

Võ Trần Hiếu
Admin

Chào bạn, bạn có thể share mình link bài gốc được không?

Anonymous
Guest

Tạo Interface sao lại ()