1 / 44

Intent

Intent. 鄧姚文 http://www.ywdeng.idv.tw. 什麼是 Intent ?. 意圖 『 預計要進行的動作 』 的抽象描述 以 startActivity 啟動一個 Activity 以 broadcastIntent 將資訊廣播給一群 BroadcastReceiver 以 startService (Intent) 或 bindService (Intent, ServiceConnection , int ) 和背景的 Service 溝通. Intent 的屬性. Component Name 欲啟動的對象的名稱

raven
Télécharger la présentation

Intent

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Intent 鄧姚文 http://www.ywdeng.idv.tw

  2. 什麼是 Intent? • 意圖 • 『預計要進行的動作』的抽象描述 • 以 startActivity啟動一個Activity • 以broadcastIntent將資訊廣播給一群BroadcastReceiver • 以startService(Intent)或bindService(Intent, ServiceConnection, int)和背景的Service溝通

  3. Intent 的屬性 Component Name 欲啟動的對象的名稱 Action 欲採取的動作 Data 資料 Category 分類 Extras 額外資訊,鍵值對 Flags 旗標

  4. Intent 主要屬性 • Action 一般常見的動作 • ACTION_VIEW • ACTION_EDIT • ACTION_MAIN • Data 資料 • 動作所需的資料 • 以Uri表示 • 例如:聯絡簿資料庫

  5. Example Action/Data Pairs • ACTION_VIEW • content://contacts/people/1 • 顯示識別碼為 1 的聯絡人資訊 • ACTION_DIAL • content://contacts/people/1 • 以撥號程式顯示聯絡人的電話號碼 • ACTION_VIEW • tel:123 • 以撥號程式顯示電話號碼 123 • ACTION_DIAL • tel:123 • 以撥號程式顯示電話號碼 123 • ACTION_EDIT • content://contacts/people/1 • 編輯識別碼為 1 的聯絡人資訊 • ACTION_VIEW • content://contacts/people/ • 列出聯絡人清單

  6. Intent 次要屬性 • Category • Action 的額外資訊 • CATEGORY_LAUNCHER應用程式的頂層,出現在程式列之中 • CATEGORY_ALTERNATIVE資料的替代動作,使用者可以選擇 • Type • 資料的 MIME 類型 • Component • 標示動作對象的元件名稱 • Extras • 額外資訊的Bundle • 鍵值對 Key-Value Pairs

  7. Examples • ACTION_MAIN with category CATEGORY_HOME • 主畫面 • ACTION_GET_CONTENT with MIME type vnd.android.cursor.item/phone • 列出聯絡人清單,供使用者瀏覽選取 • ACTION_GET_CONTENT with MIME type */* and category CATEGORY_OPENABLE • 列出可以用ContentResolver.openInputStream()顯示的資料,供使用者瀏覽選取

  8. Intent Resolution 解析法 • Explicit Intents 明確 • 以setComponent(ComponentName)或setClass(Context, Class)設定元件或類別的名稱 • 通常不設定其他資訊 • Implicit Intents 隱含 • 不明確標示動作對象 • 必須提供許多次要屬性,讓系統足以辨識作用對象

  9. 利用 Intent 切換畫面 startActivity(Intent intent) ActivityA ActivityB • Intent 維繫多個 Activity 之間的關係 • Android 的每一個 Activity 都有一個畫面 • 需要切換畫面時,從 ActivityA 透過 Intent 切換到 ActivityB • 利用 Intent 把資料從 ActivityA 傳遞到 ActivityB

  10. Intent 基本用法 // 從 ActivityA啟動 ActivityB … Intent intent = new Intent(); intent.setClass(ActivityA.this, ActivityB.class); startActivity(intent); …

  11. 練習:ImageViewer • 從教材網站下載 cats.7z,解開壓縮檔,有四張貓照片 • 製作四個Activity,每一個Activity之中包含 • 一個ImageViewer,裡頭嵌一張圖片; • 一個按鈕,點擊按鈕後換到下一頁 • 一個按鈕,點擊按鈕後換到上一頁

  12. 練習:ImageViewer

  13. 練習:ImageViewer

  14. 以 Toast 顯示訊息 • Toast 土司麵包 • 烤麵包機:土司麵包烤好了會自動彈出來 • Toast 在畫面下方彈出一個訊息,過一段時間之後自動消失 • static ToastmakeText(Contextcontext, intresId, int duration) • static ToastmakeText(Contextcontext, CharSequence text, int duration) • duration 時間長度 • Toast.LENGTH_LONG比較長的時間 • Toast.LENGTH_SHORT比較短的時間 • toast.show() 顯示訊息

  15. 練習:ImageViewer 已經是第一頁了還按『上一頁』 已經是第四頁了還按『下一頁』

  16. 練習:ImageViewer, main.xml

  17. 練習:ImageViewer, layout2.xml

  18. 練習:ImageViewer, layout3.xml

  19. 練習:ImageViewer, layout4.xml

  20. 練習:ImageViewer, strings.xml

  21. 練習:ImageViewer, AndroidManifest.xml每一個 Activity 都必須在此註冊

  22. 透過 Intent 傳遞資料 • android.os.Bundle是鍵值對(Key-Value Pair)的集合 • 存取 Intent 的 Extra 屬性 • intent.putExtra(key, value); • Bundle bundle = intent.getExtras(); • String value = bundle.getString(key);

  23. Activity 的 startActivityForResult() • 啟動一個 Activity 然後在它結束之後取得回傳的資料 • startActivityForResult (Intentintent, intrequestCode) • startActivityFromChild (Activity child, Intentintent, intrequestCode) • Activity 設定回傳資料的方式: • setResult (intresultCode) • setResult (intresultCode, Intent data) • Activity 以 finish() 結束

  24. 練習:SayHello雙畫面版 • 請教使用者的姓名與性別,然後向使用者問好,加上姓名與稱謂 • 男性稱謂為『先生』 • 女性稱謂為『小姐』 • 兩個 Activity • Prompt 提供輸入姓名與性別的畫面 • Main 輸出打招呼的訊息

  25. 練習:SayHello雙畫面版 • Main 是程式進入點 • 以 startActivityForResult啟動 Prompt • Prompt 提供畫面給使用者輸入姓名與性別 • 姓名輸入界面為 EditText • 性別輸入界面為 RadioButton • 以 RadioGroup包住一組 RadioButton形成單選題 • 以 getCheckedRadioButtonId() 取得被點選的項目 • 以 check(intradioButtonId) 設定被點選的項目 • 檢查是否確實輸入姓名 • 透過 Intent 將姓名與稱謂回傳給 Main

  26. 練習:SayHello雙畫面版Prompt 的輸入畫面

  27. 練習:SayHello雙畫面版輸入小姐姓名 Prompt Main

  28. 練習:SayHello雙畫面版輸入先生姓名 Prompt Main

  29. 練習:SayHello雙畫面版沒有輸入姓名按『確定』練習:SayHello雙畫面版沒有輸入姓名按『確定』 以 Toast 顯示『請確實輸入您的姓名!』

  30. 練習:SayHello雙畫面版strings.xml

  31. 練習:SayHello雙畫面版main.xml

  32. 練習:SayHello雙畫面版prompt.xml

  33. 練習:SayHello雙畫面版Main.java 上半部

  34. 練習:SayHello雙畫面版Main.java 下半部

  35. 練習:SayHello雙畫面版Prompt.java 上

  36. 練習:SayHello雙畫面版Prompt.java 中

  37. 練習:SayHello雙畫面版Prompt.java 下

  38. 練習:SayHello雙畫面版AndroidManifest.xml

More Related