Bài 5: Intent activity

26 3 0
Bài 5:  Intent activity

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Microsoft PowerPoint Bai 5 Intent 1132021 1132021 I N T E N T 1 NỘI DUNG 2 Gi ớ i thi ệ u Intent G ử i và nh ậ n d ữ li ệ u Activity Nh ậ nk ế t qu ả ph ả nh ồ it ừ Activity G ọ i các Activities c. • Activity con • Activity ứng dụng khác • Service

INTENT NỘI DUNG Giớ i thiệ u Intent Gử i nhậ n d ữ liệ u Activity Nh ậ nk ế t qu ả phả nh ồit Activity Gọi Activities Android 2021 1 GIỚI THIỆU INTENT 2021 3 GIỚI THIỆU INTENT • Một ứng dụng Android tập hợp gồm nhiều Activity • Các Activity gọi truyền liệu cho thông qua Intent Main Activity Items Activity Detail Activity Resource start 4 GIỚI THIỆU INTENT • Intent thơng điệp người dùng gửi đến Android để yêu cầu Android bắt đầu thực thi/hiển thị Activity Main Activity Items Activity Detail Activity start Intent Android OS NguyễnChíHiếu 2021 5 GIỚI THIỆU • Intent gọi để bắt INTENT đầu • Activity • Activity ứng dụng khác • Service 2021 6 GIỚI THIỆU INTENT • Một số phương thức khởi tạo Intent • Intent(String action) • Intent(String action, Uri uri) • Intent(Context packageContext, Class class) •… Intent intent = new Intent(this, ItemsActivity.class); 2021 7 GIỚI THIỆU INTENT Context • Context • Cung cấp thơng tin môi trường ứng dụng ContextWrapper cho phép truy xuất tài nguyên ứng dụng • Lớp Activity kế thừa từ Context ContextThemeWrapper Activity 8 BẮT ĐẦU ACTIVITY • Gọi Activity từ Activity khác: • Tường minh (explicit): định Activity bắt đầu • Không tường minh (implicit): không cần định Activity bắt đầu Android tự động chọn Activity thực phù hợp với tác vụ yêu cầu 2021 9 BẮT ĐẦU ACTIVITY • Hai phương thức bắt đầu Activity tường minh: • startActivity(Intent intent) • startActivity(Intent intent, Bundle options): tham số thứ có kiểu liệu Bundle (tập hợp gồm nhiều cặp khóa-giá trị), trả null không khai báo 2021 10 10 11 BẮT ĐẦU ACTIVITY 2017 11 BẮT ĐẦU ACTIVITY Context Context Main Activity Items Activity Intent start Android OS Intent intent = new Intent(MainActivity.this, ItemsActivity.class); startActivity(intent); 12 12 KẾT THÚC • Khái niệm Back-Stack ACTIVITY • Là ngăn xếp ghi lại thứ tự Activity gọi • Được dùng để gọi lại Activity trước Activity 2021 13 13 BẮT ĐẦU & KẾT THÚC MỘT ACTIVITY • Ví dụ Trong MainActivity, thêm vào Button viết kiện onClick cho Button sau: 2021 Intent intent = new Intent(MainActivity.this, ItemsActivity.class); startActivity(intent); finish(); 14 14 Giới thiệu Intent Extra Giới thiệu Bundle Gửi nhận liệu Activity Nhận kết phản hồi từ Activity G Ử IVÀ N H Ậ ND Ữ LIỆUACTIVITY 2021 15 15 GIỚI THIỆU INTENT EXTRA • Intent Extra cặp khóagiá trị, dùng gửi liệu kèm theo Intent Context Context “Id”: 101 Activity Activity “Name”: “Tom” • Khóa có kiểu liệu dạng chuỗi 16 16 GIỚI THIỆU INTENT EXTRA Context Context “EXTRA_EMAIL”: admin@gmail.com Activity Gmail Activity “EXTRA_SUBJECT”: ”Extras” 2021 17 17 GIỚI THIỆU BUNDLE 2021 • Bundle • Là tập hợp (bó) chứa cặp khóa-giá trị • Chỉ hỗ trợ kiểu liệu đơn giản: boolean, int, string, … 18 18 Context Activity Context “EXTRA_EMAIL”: admin@gmail.com , “EXTRA_SUBJECT”: “Bundle” Gmail Activity GIỚI THIỆU BUNDLE 2021 19 19 •Sử dụng Intent Extra 10 • Lần lượt thêm cặp khóa-giá trị vào Intent SỬ DỤNG INTENT EXTRA 22 22 SỬ DỤNG INTENT EXTRA • Một số phương thức nhận Intent Extra: • getIntExtra(String key, int defaultValue) • getStringExtra(String key) • … 2021 23 23 SỬ DỤNG BUNDLE 12 • Một số phương thức gửi nhận liệu lớp Bundle: • putInt(String key, int value) • putString(String key, String value) • getInt(String key) • getString(String key) •… 24 24 • putExtras(Bundle extras): cần tạo đối tượng Bundle trước gửi SỬ DỤNG BUNDLE 2021 25 25 2021 13 SỬ DỤNG BUNDLE Một số phương thức nhận Intent Extra lớp Intent: • • getExtras(): trả đối tượng Bundle 26 26 SỬ DỤNG BUNDLE • Bundle hỗ trợ cách để tạo liệu phức tạp thông qua việc cài đặt giao diện lớp Parelable hay Serializable • Một số phương thức: • putParcelable(String key, Parcelable value) • putParcelable(String key) • putSerializable(String key, Serializable value) • getSerializable(String key) 2021 27 27 NHẬN KẾT QUẢ PHẢN HỒI TỪ ACTIVITY 14 • Cần quy định Request Code (mã yêu cầu) để Source Activity Target Activity nhận yêu cầu phản hồi xác 28 28 NHẬN KẾT QUẢ PHẢN HỒI TỪ ACTIVITY • Thơng tin u cầu phản hồi Source Activity Target Activity Context Context requestCode, intent Activity requrestCode, resultCode, intent Activity 2021 29 29 2021 15 NHẬN KẾT QUẢ PHẢN HỒI TỪ ACTIVITY • Source Activity gửi yêu cầu gồm: • Intent: yêu cầu gọi Target Activity • Request Code • Thay phương thức startActivity(Intent intent) bằng: • startActivityForResult(Intent intent, int requestCode) 30 30 NHẬN KẾT QUẢ PHẢN HỒI TỪ ACTIVITY • Target Activity phản hồi kết gồm: • resultCode • Intent • Gán liệu cho kết phản hồi: • setResult(int resultCode) • setResult(int resultCode, Intent data): gửi kèm theo liệu 2021 31 31 16 NHẬN KẾT QUẢ PHẢN HỒI TỪ ACTIVITY • Source Activity nhận kết phản hồi gồm: Activity1 requrestCode, ContextContext Activity2 resultCode,intent • Request Code • Result: kết trả (OK, Canceled, FirstUser) • Intent: phản hồi từ Target Activity • Ghi đè phương thức: • onActivityResult(int requestCode, Result result, Intent data) 32 32 NHẬN KẾT QUẢ PHẢN HỒI TỪ ACTIVITY 2021 33 33 2021 17 NHẬN KẾT QUẢ PHẢN HỒI TỪ ACTIVITY 34 34 18 11/3/2021 NHẬN KẾT QUẢ PHẢN HỒI TỪ ACTIVITY 2021 35 35 GỌICÁC ACTIVITIES CỦA ANDROID • Giới thiệu Intent-Filters • Bắt đầu Activity khơng tường minh 2017 36 36 19 GIỚI THIỆU INTENT-FILTERS • Intent-Filters lọc Intent nhằm lọc yêu cầu mà Activity thực • Trong AndroidManifest ứng dụng, intent-filter định nghĩa ba đối tượng sau: • Action • Categories • Data 2021 37 37 GIỚI THIỆU INTENT-FILTERS • Action • Khai báo hành động thực hiện: gửi mail, gọi điện, xem ảnh, • Giá trị chuỗi: action.MAIN, action.VIEW, action.SEND, … • Data • Khai báo kiểu liệu • Giá trị đường dẫn Uri hay kiểu liệu MIME • Categories • Khai báo loại Intent 38 38 2021 20 11/3/2021 GIỚI THIỆU INTENT-FILTERS • Kết hợp ACTION DATA • ACTION_VIEW content://contacts/people/1 • ACTION_DIAL content://contacts/people/1 • ACTION_VIEW tel:123 • ACTION_DIAL tel:123 • ACTION_EDIT content://contacts/people/1 • ACTION_VIEW content://contacts/people/ 2021 39 39 GIỚI THIỆU INTENT-FILTERS • Một số phương thức • setAction(String) • setData(Uri) • setType(String) • setDataAndType(Uri, String) •… 40 40 21 BẮT ĐẦU ACTIVITY KHƠNG TƯỜNG MINH • Android tìm intent-filters AndroidManifest tất ứng dụng khác thiết bị • Nếu tìm thấy Activity phù hợp bắt đầu Activity • Ngược lại, có nhiều Activity phù hợp, Android hiển thị giao diện để người dùng chọn Activity bắt đầu 41 2017 41 BẮT ĐẦU ACTIVITY KHÔNG TƯỜNG MINH • Trong AndroidManifest, khai báo intent-filter cho MainActivity 42 42 2021 22 11/3/2021 BẮT ĐẦU ACTIVITY KHÔNG TƯỜNG MINH • Trong AndroidManifest , khai báo intent-filter cho MainActivity • Khi có yêu cầu gửi văn bản, ứng dụng vừa tạo hiển thị danh sách để người dùng chọn 2021 43 43 BẮT ĐẦU ACTIVITY KHÔNG TƯỜNG MINH 44 23 44 BẮT ĐẦU ACTIVITY KHÔNG TƯỜNG MINH 2021 45 45 TÀI LIỆU THAM KHẢO J F DiMarzio “Beginning Android Programming with Android Studio” Wrox 2016 https://developer.android.com/ https://developer.android.com/studio 2021 46 24 11/3/2021 46 25 ... Context Main Activity Items Activity Intent start Android OS Intent intent = new Intent( MainActivity.this, ItemsActivity.class); startActivity (intent) ; 12 12 KẾT THÚC • Khái niệm Back-Stack ACTIVITY. .. Intent intent = new Intent( MainActivity.this, ItemsActivity.class); startActivity (intent) ; finish(); 14 14 Giới thiệu Intent Extra Giới thiệu Bundle Gửi nhận liệu Activity Nhận kết phản hồi từ Activity. .. Target Activity • Request Code • Thay phương thức startActivity (Intent intent) bằng: • startActivityForResult (Intent intent, int requestCode) 30 30 NHẬN KẾT QUẢ PHẢN HỒI TỪ ACTIVITY • Target Activity

Ngày đăng: 21/09/2022, 21:28

Tài liệu cùng người dùng

Tài liệu liên quan