Nhắc lại về chuyển Activity trong Android
Trong Android để chuyển Activity, sử dụng phương thức startActivity()
với đối số truyền vào là 1 Intent
. Ví dụ chuyển từ MainActivity
(Activity A) sang FavoriteActivity
(Activity B).
Intent intent = new Intent(MainActivity.this, FavoriteActivity.class);
startActivity(intent);
Sau khi gọi phương thức startActivity()
thì MainActivity
được đẩy xuống dưới Back Stack, FavoriteActivity
nằm ở trên đỉnh của Back Stack và ở trạng thái running.

Với việc sử dụng phương thức startActivity()
để thực hiện chuyển Activity thì không thể nhận được dữ liệu từ Activity đã bắt đầu, để nhận dữ liệu từ Activity đã bắt đầu phải sử dụng phương thức startActivityForResult()
và phương thức onActivityResult()
để xử lý dữ liệu trả về ở Activity gọi startActivityForResult()
.
startActivityForResult
Phương thức startActivityForResult()
được sử dụng khi Activity A start Activity B và muốn nhận dữ liệu trả về từ Activity B đó.
public void startActivityForResult(Intent intent, int requestCode)
Với:
intent
: đối tượng chứa các thông tin về Activity muốn chuyển đến.requestCode
: 1 con số kiểuint
.
onActivityResult
Cần phải override lại phương thức onActivityResult()
trong Activity A muốn nhận dữ liệu trả về, phương thức này luôn đồng hành với phương thức startActivityForResult()
.
Phương thức onActivityResult()
là phương thức xử lý kết quả trả về, từ Activity đã mở thông qua phương thức startActivityForResult()
. Phương thức này có prototype như sau:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
Các đối số có ý nghĩa như sau:
requestCode
: 1 số kiểuint
đã truyền qua với phương thứcstartActivityForResult(Intent intent, int requestCode)
.resultCode
: là code đã đặt trong phương thứcsetResult(Intent data, int resultCode)
data
: là đối tượng chứa dữ liệu ở Activity B.