9-2 使用 Intent 轉換 Activity

使用 Intent 轉換 Activity

  要如何由原本的第一個 MainActivity 轉換到我們剛產生的 ResultActivity 呢?答案是使用 Intent,也就是「意圖」,Inten代表使用者 與應用程式的互動,互動通常會產生變化,例如按下一個圖示後進行撥出電話,或者按下一個按鈕後轉換到另一個畫面 ( 也就是另一個 Activity)。使用 android.content.Intent 類別可以達到這些功能,Intent 類別的建構子有很多種,其中常用來轉換 Activity 的建構子規格如下:

Intent(Context packageContent, Class<?> cls)

  這個建構子的第一個參數是 Context,代表從那一個 Activity 發出此意圖,如果在 MainActivity 中產生 Intent,那就是代表 MainActivity 本身,可使用「this」關鍵字,第二個參數則需給予轉換目的地的類別,本例為 ResultActivity,應該使用「ResultActivity::class.java」,範例程式碼如下:

val intent = Intent(this, ResultActivity::class.java)

  上例程式碼產生一個名稱為小寫「intent」的 Intent 物件,但此時 intent 並不會有任何作用,它只是個在記憶體中的物件罷了,在一個 Activity 中可以使用 startActivity 方法,將一個 intent 物件發送至 Android 系統中,由 Android 系統判別,辨識後由系統將我們的 ResultActivity 顯示在畫面上,範例程式碼如下:

startActivity(intent)

  請在 MainActivity 的 bmi 方法中實作以上程式碼,在運算並得到 bmi 值後,產生 Intent 物件,並呼叫 startActivity 方法,部份程式碼如下:

提示:

  之前章節所實作的 Toast、對話框等程式碼在之後不會被使用了,可使用多行註解 /* ... */ 將這些程式碼註解,或選取後,按下「Ctrl + Shift + /」。

  執行結果,當輸入體重與身高並按下計算按鈕後,會轉換至 ResultActivity,如下圖:

  目前新的 ResultActivity 仍然未實作 BMI 顯示的功能,接下來我們將一一完成必須的程式設計工作。

活用 Kotlin 特點

  上述程式碼先產生一個 intent 物件,之後在 startActivity 方法中使用它,雖然可以達成目標,這個 intent 物件直到該方法結束後才會被系統回收。Kotlin 有許多增加語意的好語法,在一個物件的後面使用 .apply { ... } 語法,會增加可讀性,如下:

  上述程式碼先產生一個 Intent 物件,使用 .apply 將此物件使用在後續的大括號區塊中,可以在區塊中使用 this 取得這個物件,如此一來,這個物件被使用在 startActivity 方法中,就完成了產生 Intent 物件再轉換至 ResultActivity 的工作了。

完成並繼續  
問題討論

0 問答