【问题标题】:Kotlin pass array of custom objects via Intents and receive as a ArrayListKotlin 通过 Intents 传递自定义对象数组并作为 ArrayList 接收
【发布时间】:2018-03-20 12:14:37
【问题描述】:

我有几个活动,我使用 Intent 在它们之间传递数据。我想从第一个活动中传递我的自定义对象数组,并使其成为第二个活动中的数组列表。我的代码是:

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 数组列表的最有效方法是什么?

【问题讨论】:

标签: android kotlin kotlin-android-extensions kotlin-extension


【解决方案1】:

答案很简单。

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())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-15
    • 2016-12-03
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 2021-12-24
    • 1970-01-01
    相关资源
    最近更新 更多