Kotlin 通过 Intents 传递自定义对象数组并作为 ArrayList 接收
Kotlin pass array of custom objects via Intents and receive as a ArrayList
我有几个活动,我使用 Intents 在它们之间传递数据。我想从第一个 activity 传递我的自定义对象数组,并在第二个 activity 中将其设为数组列表。我的代码是:
data class Attachment(val Name: String, val Content: String)
class ActivityA {
private var attachments: Array<Attachment> = arrayOf()
fun callB() {
intent = Intent(this,ActivityB::class.java).apply {
putExtra("Attachments", attachments)
}
}
}
class ActivityB {
private var attachments: ArrayList<Attachment>?
override fun onCreate(savedInstanceState: Bundle?) {
// How do I get the passed array and store in the arraylist here ?
val a: Array<Attachment> = intent.getParcelableArrayExtra("Attachments") as Array<Attachment>
attachments = a // fails with a type mismatch error
attachments = ArrayList(a) // fails again
attachments = intent.get????????("Attachments") // any such option ?
}
}
现在我的问题是,将 ActivityA 中的 attachments
数组添加到 ActivityB 中的 attachments
数组列表的最有效方法是什么?
答案很简单。
data class Attachment(val Name: String, val Content: String) : Serializable
// In ActivityB
val a: Array<SecretJSON.Attachment> = intent.getSerializableExtra("Attachments") as Array<Attachment>
attachments = a.toCollection(ArrayList())
我有几个活动,我使用 Intents 在它们之间传递数据。我想从第一个 activity 传递我的自定义对象数组,并在第二个 activity 中将其设为数组列表。我的代码是:
data class Attachment(val Name: String, val Content: String)
class ActivityA {
private var attachments: Array<Attachment> = arrayOf()
fun callB() {
intent = Intent(this,ActivityB::class.java).apply {
putExtra("Attachments", attachments)
}
}
}
class ActivityB {
private var attachments: ArrayList<Attachment>?
override fun onCreate(savedInstanceState: Bundle?) {
// How do I get the passed array and store in the arraylist here ?
val a: Array<Attachment> = intent.getParcelableArrayExtra("Attachments") as Array<Attachment>
attachments = a // fails with a type mismatch error
attachments = ArrayList(a) // fails again
attachments = intent.get????????("Attachments") // any such option ?
}
}
现在我的问题是,将 ActivityA 中的 attachments
数组添加到 ActivityB 中的 attachments
数组列表的最有效方法是什么?
答案很简单。
data class Attachment(val Name: String, val Content: String) : Serializable
// In ActivityB
val a: Array<SecretJSON.Attachment> = intent.getSerializableExtra("Attachments") as Array<Attachment>
attachments = a.toCollection(ArrayList())