Trong cùng một ứng dụng, có hai Activity A và B. Mỗi activity thực hiện một công việc khác nhau của ứng dụng. Vấn đề, từ Activity A truyền dữ liệu và gọi thực hiện Activity B. Sau đó nhận kết quả trả về sau khi Activity B xử lý xong.
Ví dụ: từ Activity ViewDetailContact ta gọi Activity EditContact để cập nhập dữ liệu. Sau khi activity EditContact thực hiện xong, ta phải cập nhập lại dữ
4.2.2. Giải pháp
Trong ứng dụng có bao nhiêu activity thì phải khai báo tất cả trong tập tin cấu hình AndroidManifesh.XML.
Khởi tao đối tượng Intent với tham số tên lớp activity cần gọi thực hiện
Khởi tao đối tượng Bundle để truyền đối số thích hợp để Activity cần gọi thực hiện xử lý.
Truyền các đối số thích hợp vào đối tượng Bundle.
Đặt đối tượng Bundle vào đối tượng Intent thông qua phương thức putExtras.
Gọi thức hiện Activity thông qua phương thức startSubActivity của lớp activity.
Xử lý sự kiện onActivityResult() khi activity cần gọi đã thực hiện xong.
4.2.3. Chi tiết giải pháp
Khai báo các Activity trong file cấu hình ứng dụng AndroidManifesh.XML.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="gpcontact.ui">
<application android:icon="@drawable/icon">
<activity android:name=".ViewContat" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> </intent-filter>
</activity>
<activity android:name=".EditContact" android:label="@string/app_name/"> </application>
</manifest>
Gọi thức hiện Activity EditContact, truyền tham số id của Contact Item cần cập nhập cho activity EditContact cần thực hiện.
// khởi tạo đối tượng intent để di chuyển qua lai các màn hình
Intent i = new Intent(this,EditContact.class);
//khởi tạo đối tượng Bundle để truyển các đối số cho activity EditContact
Bundle wr = new Bundle();
//truyên đối số isEdit và idContacts để EditContac thực hiện cập nhập dữ
liệu với Contact Item có id=3
wr.putBoolean(“isEdit”,true”); wr.putInt(“idContacts”,3);
// Đặt đối tượng Bundle này vào đối tượng Intent
i.putExtras(wr);
// Gọi thực hiện activity với tham số request code
startSubActivity(i, requestcode); // requestcode=1
//nếu tham số requestcode >0 thì sự kiện OnActivityresult sẽ dược gọi
Xử lý sự kiện onActivityResult() trong activity ViewContac sau khi
activity EditContact đã thực hiện xong
@Override
protected void onActivityResult(int requestCode, int resultCode, String data, Bundle extras)
{
super.onActivityResult(requestCode, resultCode, data, extras); if (requestCode == 1)
{ } }
4.3. Gọi Activity giữa hai ứng dụng khác nhau4.3.1. Vấn đề