G ọ i Activity khác trong cùng m ộ t ứ ng d ụ ng

Một phần của tài liệu Một số vấn đề về lập trình giao diện trong Android (Trang 59 - 61)

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 đề

Một phần của tài liệu Một số vấn đề về lập trình giao diện trong Android (Trang 59 - 61)