ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
Activity trong Android
Activity?
• Activity là một trong 4 thành phần chính của
một ứng dụng Android.
• Activity được dùng để hiện thị một màn hình.
• Khi làm việc với activity cần bắt đầu với một
số kiến thức cơ bản sau:
– Lifecycle của activity
– Tạo menu, dialog
– Khởi động một activity, liên lạc giữa 2 activity
– Task
Lifecycle của Activity
Tạo menu
• Tạp menu (đơn giản cực kỳ):
– Chuột phải vào một dòng trống trong Activity
– Chá»n Source  Override/Implement methods 
chá»n onCreateOptionsMenu và onOptionsItemSelected
– Trong onCreateOptionsMenu, thêm đoạn code:
menu.add(0, 111, 0, "Item1");
– Trong onOptionsItemSelected, thêm xử lý dạng:
switch (item.getItemId()) {
case 111:
//lam gi do
break;
}
Tạo Dialog
• Trong ứng dụng ApiDemos  mở package
com.example.android.apis.app 
AlertDialogSamples.java
• Xem demo cách gá»i dialog, hàm callback và
cách tạo một dialog.
Khởi động một activity
• Dùng Intent:
– Khai báo tÆ°á»ng minh: cung cấp chính xác thông
tin của activity cần gá»i (nếu cùng ứng dụng chỉ cần
cung cấp tên class, nếu ứng dụng khác nhau thì
cung cấp tên package, tên class)
– Khai báo không tÆ°á»ng minh: cung cấp thao tác cần
làm gì, với loại dữ liệu nào, thao tác thuộc nhóm
nào… hệ thống sẽ tìm activity tương ứng để khởi
Ä‘á»™ng.
Khởi động một activity
• TÆ°á»ng minh: Ä‘oạn code bên dÆ°á»›i sẽ tạo khởi
động Activity tên là TargetActivity
Intent intent = new Intent(getApplicationContext(),
TargetActivity.class);
startActivity(intent);
Khởi động một activity
• Không tÆ°á»ng minh: Ä‘oạn code bên dÆ°á»›i sẽ
khởi động một activity nào đó đăng có khả
năng xem ảnh.
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(MediaStore.Images.Media.EXTERNAL_CON
TENT_URI);
startActivity(intent);
Khởi động một activity
• Vá»›i cách khởi Ä‘á»™ng activity không tÆ°á»ng
minh, bạn cần biết một chút vỠIntent-filter.
• Intent-filter sẽ giúp một activity (chung hơn là
một thành phần ứng dụng) đăng ký với hệ
thống mình có thể làm được thao tác gì, trong
nhóm nào, với loại dữ liệu nào.
• Như vậy khi intent và intent-filter khớp nhau,
activity sẽ được hệ thống khởi động.
Truyá»n dữ liệu giữa 2 activity
• Khi khởi động một activity, ta có thể gửi kèm
dữ liệu trong intent như ví dụ sau:
intent.putExtra("value1", new String("Hello"));
intent.putExtra(“value2", new Long(100));
• Bên phía activity được khởi động, có thể lấy
dữ liệu được gửi như sau:
getIntent().getExtras().getString("value1");
getIntent().getExtras().getLong("value2");
• String value1 = extras.getString(“value1");
• String value2 = extras.getString(“value2");
Truyá»n dữ liệu giữa 2 activity
• Có thể khởi động một activity với một yêu cầu
nào đó và activity kia khi làm xong công việc
sẽ trả lại kết quả cho activity trước
• Ví dụ activity A yêu cầu một activity làm giúp
việc chụp ảnh, activity B đáp ứng được việc
này, sau khi user chụp ảnh xong sẽ trả lại file
ảnh cho activity A.
• NhÆ° thế sẽ đỡ tốn nhiá»u công sức làm má»™t việc
mà ngÆ°á»i khác đã làm rồi.
Vai trò của intent
• Giao diện ít hơn.
• Thừa kế được giao diện.
• Lá»c theo yêu cầu ngÆ°á»i dùng.
• Ứng dụng client trong hệ sinh thái ứng dụng
(email, facebook…).
• Dễ dàng chuyển tiếp để tương thích với dịch
vụ mới.
Những Ä‘iá»u nên tránh
• Ảnh hưởng xấu đến giao diện ngÆ°á»i dùng.
• Không đem lai hiệu quả: chi phí đầu tư quá
lá»›n nhÆ°ng ít ngÆ°á»i sá»­ dụng.
• Không có khả năng tương thích (chuyển tiếp)
đến các dịch vụ khác.

More Related Content

ºÝºÝߣ bài giảng lập trình Android DTU - Phần 4 (Activity)

  • 2. Activity? • Activity là má»™t trong 4 thành phần chính của má»™t ứng dụng Android. • Activity được dùng để hiện thị má»™t màn hình. • Khi làm việc vá»›i activity cần bắt đầu vá»›i má»™t số kiến thức cÆ¡ bản sau: – Lifecycle của activity – Tạo menu, dialog – Khởi Ä‘á»™ng má»™t activity, liên lạc giữa 2 activity – Task
  • 4. Tạo menu • Tạp menu (Ä‘Æ¡n giản cá»±c kỳ): – Chuá»™t phải vào má»™t dòng trống trong Activity – Chá»n Source  Override/Implement methods  chá»n onCreateOptionsMenu và onOptionsItemSelected – Trong onCreateOptionsMenu, thêm Ä‘oạn code: menu.add(0, 111, 0, "Item1"); – Trong onOptionsItemSelected, thêm xá»­ lý dạng: switch (item.getItemId()) { case 111: //lam gi do break; }
  • 5. Tạo Dialog • Trong ứng dụng ApiDemos  mở package com.example.android.apis.app  AlertDialogSamples.java • Xem demo cách gá»i dialog, hàm callback và cách tạo má»™t dialog.
  • 6. Khởi Ä‘á»™ng má»™t activity • Dùng Intent: – Khai báo tÆ°á»ng minh: cung cấp chính xác thông tin của activity cần gá»i (nếu cùng ứng dụng chỉ cần cung cấp tên class, nếu ứng dụng khác nhau thì cung cấp tên package, tên class) – Khai báo không tÆ°á»ng minh: cung cấp thao tác cần làm gì, vá»›i loại dữ liệu nào, thao tác thuá»™c nhóm nào… hệ thống sẽ tìm activity tÆ°Æ¡ng ứng để khởi Ä‘á»™ng.
  • 7. Khởi Ä‘á»™ng má»™t activity • TÆ°á»ng minh: Ä‘oạn code bên dÆ°á»›i sẽ tạo khởi Ä‘á»™ng Activity tên là TargetActivity Intent intent = new Intent(getApplicationContext(), TargetActivity.class); startActivity(intent);
  • 8. Khởi Ä‘á»™ng má»™t activity • Không tÆ°á»ng minh: Ä‘oạn code bên dÆ°á»›i sẽ khởi Ä‘á»™ng má»™t activity nào đó đăng có khả năng xem ảnh. Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(MediaStore.Images.Media.EXTERNAL_CON TENT_URI); startActivity(intent);
  • 9. Khởi Ä‘á»™ng má»™t activity • Vá»›i cách khởi Ä‘á»™ng activity không tÆ°á»ng minh, bạn cần biết má»™t chút vá» Intent-filter. • Intent-filter sẽ giúp má»™t activity (chung hÆ¡n là má»™t thành phần ứng dụng) đăng ký vá»›i hệ thống mình có thể làm được thao tác gì, trong nhóm nào, vá»›i loại dữ liệu nào. • NhÆ° vậy khi intent và intent-filter khá»›p nhau, activity sẽ được hệ thống khởi Ä‘á»™ng.
  • 10. Truyá»n dữ liệu giữa 2 activity • Khi khởi Ä‘á»™ng má»™t activity, ta có thể gá»­i kèm dữ liệu trong intent nhÆ° ví dụ sau: intent.putExtra("value1", new String("Hello")); intent.putExtra(“value2", new Long(100)); • Bên phía activity được khởi Ä‘á»™ng, có thể lấy dữ liệu được gá»­i nhÆ° sau: getIntent().getExtras().getString("value1"); getIntent().getExtras().getLong("value2"); • String value1 = extras.getString(“value1"); • String value2 = extras.getString(“value2");
  • 11. Truyá»n dữ liệu giữa 2 activity • Có thể khởi Ä‘á»™ng má»™t activity vá»›i má»™t yêu cầu nào đó và activity kia khi làm xong công việc sẽ trả lại kết quả cho activity trÆ°á»›c • Ví dụ activity A yêu cầu má»™t activity làm giúp việc chụp ảnh, activity B đáp ứng được việc này, sau khi user chụp ảnh xong sẽ trả lại file ảnh cho activity A. • NhÆ° thế sẽ đỡ tốn nhiá»u công sức làm má»™t việc mà ngÆ°á»i khác đã làm rồi.
  • 12. Vai trò của intent • Giao diện ít hÆ¡n. • Thừa kế được giao diện. • Lá»c theo yêu cầu ngÆ°á»i dùng. • Ứng dụng client trong hệ sinh thái ứng dụng (email, facebook…). • Dá»… dàng chuyển tiếp để tÆ°Æ¡ng thích vá»›i dịch vụ má»›i.
  • 13. Những Ä‘iá»u nên tránh • Ảnh hưởng xấu đến giao diện ngÆ°á»i dùng. • Không Ä‘em lai hiệu quả: chi phí đầu tÆ° quá lá»›n nhÆ°ng ít ngÆ°á»i sá»­ dụng. • Không có khả năng tÆ°Æ¡ng thích (chuyển tiếp) đến các dịch vụ khác.