Tìm hiểu về Intent trong Android

Intent trong Android là một thành phần quan trọng, một số chức năng của Intent như giúp khởi chạy các thành phần Activity, Services, truyền dữ liệu giữa các Activity với nhau…

Đối tượng Intent trong Android giúp các thành phần trong một ứng dụng Android có thể kết nối với nhau hoặc với các ứng dụng Android khác.

Tìm hiểu về Intent trong Android

1. Intent là gì?

Intent thuộc gói android.content.Intent và Intent có thể:

  • Intent có thể khởi chạy một Activity, Service…
  • Intent có thể truyền nhận dữ liệu giữa các Activity với nhau hoặc giữa các ứng dụng.

2. Chức năng Intent trong Android

Trong Android hỗ trợ hai loại Intent tường minh (explicit) và Intent không tường minh (implicit) mà bạn sẽ sử dụng.

2.1 Khởi chạy Activity hoặc Service

Để bắt đầu một Activity bằng cách sử dụng phương thức startActivity(intent)

Intent intent = new Intent(this, MyActivity.class);
startActivity(intent);

Để bắt đầu một Service bằng cách sử dụng phương thức startService(intent)

Intent intent = new Intent(this, MyService.class);
startService(intent);

2.2 Truyền tải dữ liệu

Để truyền dữ liệu cho Intent bằng cách gán đối tượng Bundle, ví dụ để truyền dữ liệu từ MainActivity sang SubActivity thì lớp MainActivity.class bạn khai báo sau:

Intent intent = new Intent(MainActivity.this, SubActivity.class);
Bundle bundle = new Bundle();
bundle.putString("kind", "admin");
bundle.putBoolean("role", true);
intent.putExtra("DATA", bundle);
startActivity(intent);

Lớp SubActivity.class để nhận dữ liệu ban lấy từ đối tượng Bundle truyền qua:

Intent intent = getIntent();
Bundle bundle = intent.getBundleExtra("DATA");
String kind = bundle.getString("kind");
boolean role = bundle.getBoolean("role");

2.3 Nhận dữ liệu từ sub-activity

Nếu bạn khởi tạo Activity bằng startActivityForResult() thì khi Sub Activity được đóng lại trong phương thức finish() thì bạn sẽ truyền tải dữ liệu sang lại Activity ban đầu.

Lớp MainActivity.class như sau:

Intent i = new Intent(MainActivity.this, SubActivity.class);
startActivityForResult(i, REQUEST_CODE);

Lớp SubActivity.class như sau:

@Override
public void onFinish() {
       Intent intent = new Intent();
       intent.putExtra("kind", "mykind");
       intent.putExtra("data", "mydata");
       setResult(274, intent);
       finish();
}

Lớp MainActivity.class trong phương thức onActivityResult() như sau:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
      super.onActivityResult(requestCode, resultCode, intent);
      if (requestCode == 274) {
            String kind = intent.getStringExtra("kind");

      }
}

Lời kết: Như vậy bạn vừa xem qua phần tìm hiểu về Intent trong Android. Ngoài ra bạn có thể xem thêm nhiều bài viết khác trong chủ đề lập trình Android tại Team Việt Dev.

(Tác giả: Team Việt Dev)

Bình luận