30/09/2018, 19:47

[Android] Lấy dữ liệu từ nhiều Activity khác nhau

Em có 3 Activities là Main, A, B. Từ Main có thể chuyển tới A, B và A,B có thể pass dữ liệu về Main. Vậy làm thế nào để lấy được dữ liệu từ A hay từ B ở Main?

Phan Hoàng viết 21:56 ngày 30/09/2018

Mỗi lần thoát activity thì lưu cái data này vào đâu đó.

1- DB
2- Shared pref
3- Vứt vào object singleton, tồn tại suốt trong app (thường thì nên extend Application rồi vứt data này vào class extend này).
4- Vứt vào intent

Truong Pham viết 21:53 ngày 30/09/2018

Nếu mình dùng Intent thì làm sao mình phân biệt đc đâu là dữ liệu từ A hay B ạ?

Phan Hoàng viết 21:55 ngày 30/09/2018

Giả sử nhé, từ main ->A, mình gọi startActivityForResult, ở bên A-> mình vứt data vào intent trả về cho main.
Giả sử từ A->B, mình gọi startActivity bình thường thôi, vứt data vào intent để sang B lấy, gắn tag là “lấy từ A”. Trong B, khi destroy mình cũng vứt data vào intent trả về cho main, trong cái intent này mình có “data lấy từ A” và add thêm data lấy từ B. Thế là main lấy được mặc dù A không gửi intent cho main nhưng vẫn keep được data của A.

Tuy nhiên, cách này hơi “khó maintain”.
Bạn nên main->A->main (save vào data trên main)
sau đó main ->B luôn->main (save vào data trên main)

Muốn từ A-> B thì A->main->startActivity B (vì máy làm rất nhanh nên bạn sẽ không có cảm giác quay trở về main nữa ^^. Thường cách làm này khi muốn làm wizard nhiều màn hình để collect dữ liệu, ví dụ màn hình A mình collect tên tuổi, info, màn hình B collect dữ liệu học vấn, màn hình C collect dữ liệu cá nhân)

Bài liên quan
0