Một thao tác phổ biến trong lập trình Android là truyền dữ liệu cho Activity mới được mở ra. Chẳng hạn trong trường hợp, khi gọi mở một activity mới ta có thể truyền sẵn chuỗi dữ liệu cần hiển thị của Activity này.
Trước tiên ta xem xét một ví dụđơn giản nhất trong việc sử dụng Intent để mở một Activity khác từ Activity hiện tại. Cụ thểnhư sau, trong project HelloAndroid, bạn tạo thêm activity là GreetingActivity; MainActivity có một ô nhập liệu và một nút bấm, khi nhấn với nút bấm này sẽ mở GreetingActivity.
Để truyền dữ liệu từ MainActivity, trước khi gọi startActivity, ta gắn dữ liệu cần truyền vào đối tượng Intent dùng để mở GreetingActivity như sau:
// Tạo một Intent với mục tiêu là GreetingActivity
Intent it = new Intent(this, "com.example.GreetingActivity"); // Các dữ liệu gửi kèm
it.putExtra("student_name", "John Kerry"); it.putExtra("student_age", 23);
// Yêu cầu start Activity chỉđịnh trong Intent.
ThS. Bùi Trung Úy 40 Hoặc chúng ta có thể sử dụng code như sau:
// Tạo một Intent với mục tiêu là GreetingActivity
Intent it2 = new Intent(this, "com.example.GreetingActivity"); // Các dữ liệu gửi kèm - Sử dụng Bundle
Bundle extras = new Bundle();
extras.putString("student_country", "Da Nang – Viet Nam"); extras.putInt("student_yearbirth", 1986);
//---attach the Bundle object to the Intent object--- It2.putExtras(extras);
//-- Yêu cầu start Activity và sẽ có phản hồi từActivity được gọi. this.startActivityForResult(it2, REQUEST_CODE);
Khi đó, trong hàm onCreate của activity mục tiêu GreetingActivity, ta có thể lấy dữ liệu được truyền sang bằng cách lấy Intent qua hàm getIntent() và lần lượt lấy ra các trường dữ liệu tương ứng bằng các phương thức getStringExtra, getIntExtra, getExtras… như sau:
//---get the data passed Intent it = getIntent();
String name = it.getStringExtra("student_name"); int age = it.getIntExtra("student_age", 0);
Hoặc lấy dữ liệu theo dạng bundle:
//---get the Bundle object passed in--- Bundle bundle = it.getExtras();
String country = bundle.getString("student_country"); int year = bundle.getInt("student_yearbirth");