Truyền dữ liệu giữa các Activity

Một phần của tài liệu xây dựng ứng dụng tra cứu thông tin tìm đường xe buýt kết hợp nhận diện giọng nói (Trang 54 - 56)

- Truy vấn phức tạp:

3.1.6.Truyền dữ liệu giữa các Activity

Gọi Activity

Trong Android có hai kiểu gọi Activity thông dụng:

startActivity(Intent intent): Gọi Activity mới, Activity gọi sẽ chuyển sang

trạng thái onPause(). Activity được gọi sẽ tạo mới thông qua onCreate() và hiển thị lên màn hình. Nếu Activity được gọi kết thúc, Activity đã gọi nó sẽ thực hiện onResume() và hiển thị lên màn hình.

startActivityForResult(Intent intent,int requestCode): Gọi Activity mới và chờ kết quả từ Activity được gọi, tham số đưa vào có thêm requestCode để phân biệt mục đích gọi Activity mới, Activity gọi sẽ chuyển sang trạng thái onPause(). Activity được gọi sẽ tạo mới thông qua onCreate() và hiển thị lên màn hình. Nếu Activity được gọi kết thúc, sẽ có trạng thái kết quả được thiết lập để trả về Activity gọi nó thông qua các phương thức:

setResult(int resultCode): resultCode cho biết kết quả thực hiện của

Activity được gọi.

setResult(int resultCode, data): Thêm dữ liệu vào Intent và gởi cho

Activity đã gọi nó bằng startActivityForResult().

Sử dụng Intent để gọi Activity và truyền dữ liệu giữa các Activity

Khởi tạo đối tượng Intent, yêu cầu truyền vào 2 tham số

Intent myIntent=new Intent(MainActivity.this, SecondActivity.class); startActivity(myIntent);

MainActivity.this: Context của Activity hiện tại.

Để có thể truyền dữ liệu vào Intent thì cần phải sử dụng Bundle. Bundle có vai trò giống như một bộ chứa có khả năng chứa đựng một tập dữ liệu để truyền vào Intent.

Khởi tạo Bundle bằng cách khai báo:

Bundle myBundle = new Bundle();

Bundle có thể đưa vào tất cả các kiểu dữ liệu cơ bản của Java. Ngoài ra nếu muốn đưa vào kiểu dữ liệu là một đối tượng, phải xây dựng một lớp và hiện thực giao diện Parcelable.

Phương thức đưa dữ liệu vào Bundle:

putExtra(String key, value): đưa dữ liệu vào bundle, dữ liệu bao gồm các

kiểu dữ liệu cơ bản trong Java.

putParcelable(String key, Parcelable value): đưa đối tượng Parcelable vào

bundle.

putParcelableArray(String key, Parcelable[] value): đưa một mảng đối

tượng Parcelable vào bundle.

putParcelableArrayList(String key, ArrayList<Parcelable> value): đưa

một ArrayList đối tượng Parcelable vào bundle. Phương thức đưa Bundle vào Intent:

putExtras(Bundle extras).

Phương thức lấy Bundle từ Intent: getExtras(). Lấy dữ liệu ra từ Bunble:

getInt(String key)

getIntArray (String key)

getIntArray(String key) (adsbygoogle = window.adsbygoogle || []).push({});

getParcelable(String key)

getParcelableArray(String key)

getParcelableArrayList(String key)

Một phần của tài liệu xây dựng ứng dụng tra cứu thông tin tìm đường xe buýt kết hợp nhận diện giọng nói (Trang 54 - 56)