在 android 的開發過程中,會有很多的 activity 跟 fragment,如果想要在畫面之間傳遞訊息的話可以用以下幾種方法
首先要先知道如何開啟其他的畫面。
如果想要在從一個 activity 開啟另一個 activity 的時候,可以使用 Intent。
val i= Intent(this, ResultActivity::class.java)
startActivity(i)
或者也可以不用宣告出來,直接寫在裡面
startActivity(Intent(this, ResultActivity::class.java))
這邊用一個小小的範例做示範:在 FirstActivity 裡有一個 editText 跟可以跳去 ResultActivity 的 Button
並且把剛剛 EditText 裡的字串顯示在 ResultActivity 的 TextView 上,達到兩個 activity 傳遞資料的效果
而第一個方法就是用 putExtra 讓開啟 activity 的 intent 帶資料,
在 Extra 裡面跟 Map 一樣是以 <key, value>
的形式儲存。
val i= Intent(this, ResultActivity::class.java)
i.putExtra("Text", it.toString())
startActivity(i)
putEntra 透過多載,可以輸入眾多不同資料型態的 value。
使用時再去打 intent 透過 key 就可以得到資料了
val text= intent.getStringExtra("Text")
這裡的 intent 是並不是我宣告的
如果需要更大量的資料,可以把 Bundle 加進 intent 裡,多了一層 buddle,就能夠再整理資料。bundle 的資料放入方式跟 intent 的 extra 可以說是大同小異,也都是 key value, key value 的形式。
val i= Intent(this, ResultActivity::class.java)
val bundle= Bundle().apply {
putString("Text", it.toString())
}
i.putExtra("TextBundle", bundle)
startActivity(i)
val bundle= intent.getBundleExtra("TextBundle")
val text= bundle?.getString("Text")
另外需要注意的是,包括剛剛的 Extra 跟這裡的 Bundle 拿到的字串都是 String? 型態,也就是有可能為空。在使用上記得加上濾空