使用Intent在Activity間傳遞資料(bundle)
不同Activity想傳遞簡單的資料,
檢討
雖然putExtra和getExtra用起來很簡單,
但還是錯用,因此特別書寫一下!
有一點我犯的錯,紀錄一下。
當你使用intent時,不用另外指定給它新Bundle()。
不過底下這行還沒編譯就會直接報錯了。
intent.extras = Bundle()
延用舊intent塞值:
intent.putExtraString(KEY, 你要存的字串值)
或重新產生一個Intent再塞值:
Intent().apply{
// put 你的資料在apply{ }中
}
最後putExtra能存的型態很多,
不只基本的Int、String、Float還有Array,
甚至連Serializable的物件都行。
可以使用Intent內的Bundle來儲存,
然後再利用Intent本身回傳。
通常只有這兩種情況,而這兩種情況也可能連續發生。
1. A Activity傳值呼叫B Activity,B 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的物件都行。
留言
張貼留言