使用Intent在Activity間傳遞資料(bundle)

不同Activity想傳遞簡單的資料,
可以使用Intent內的Bundle來儲存,
然後再利用Intent本身回傳。

通常只有這兩種情況,而這兩種情況也可能連續發生。
1.  A Activity傳值呼叫B ActivityB Activity取得A給予的值。
Ex:聯絡人App,列表畫面 中點擊某個聯絡人跳出 編輯畫面
編輯畫面需要預先填入該聯絡人的基本資料在每個欄位中。



2. 當B Activity 處理完成A Activity給予的任務,要結束B本身並返回資料給A
Ex:當編輯成功時,編輯畫面關閉但同時將已更改聯絡人的id返回給列表畫面


檢討
雖然putExtra和getExtra用起來很簡單,
但還是錯用,因此特別書寫一下!

有一點我犯的錯,紀錄一下。
當你使用intent時,不用另外指定給它新Bundle()。

不過底下這行還沒編譯就會直接報錯了。
intent.extras = Bundle()

延用舊intent塞值:
intent.putExtraString(KEY, 你要存的字串值)
或重新產生一個Intent再塞值:
Intent().apply{
   // put 你的資料在apply{ }中
}

最後putExtra能存的型態很多,
不只基本的Int、String、Float還有Array,
甚至連Serializable的物件都行。

留言

這個網誌中的熱門文章

Kotlin玩Android第03篇 Listview(01 ArrayAdapter)

golang本地測試如何繞過防火牆詢問允許