Intent 中文為意圖,在許多場景可以使用到,跳轉畫面 (Activity) 、開啟相機、開啟相簿…等等,有許多用途,今天先來介紹 Activity 的跳轉畫面。
Intent: Intent Android 官方文件。
可以在上面連結看到, Intent 有許多建構子,可以做的事相當多,而今天要介紹的 Activity 跳轉畫面需要用到的是 Intent(Context packageContext, Class<?> cls) 。
Context packageContext : 需提供一個 Context ,在 Activity 中通常直接獲取該 Activity 的 Context 。
Class<?> cls : 提供一個要跳轉過去的 Activity 。
在這邊建立 Intent 是為了要讓 Activity 中的 function startActivity 或 startActivityForResult 使用,這兩個 function 差別如下。
startActivity : Activity A 跳轉到 Activity B ,且 Activity B 並無回傳值給 Activity A。
startActivityForResult : Activity A 跳轉到 Activity B ,且 Activity B 有回傳值給 Activity A , Activity A 必須 override onActivityForResult 這個 Function 來接收 Activity B 的回傳值,而因為要 override 這個 function 在 startActivityForResult 時除了 Intent 外還需要第二個參數 - RequestCode ,來讓 startActivityForResult 辨別是哪一個 Activity 回傳的。
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == 1 && resultCode == Activity.RESULT_OK) {
}
}
這邊假設 requestCode 是 1,在 override 後通常會判斷 requestCode 和 resultCode 是否吻合,再去執行所要做的程式碼。