在kotlin中创建一个可分割的对象

Rab*_*dka -4 android parcelable android-intent kotlin

在kotlin中创建可分割对象的最佳方法?

San*_*iya 8

TestActivity.kt

class TestActivity : Activity() {  
    val DEVOTIONAL_RESPONSE: String = "DEVOTIONAL_RESPONSE"
    var holdr: Holdr_ActivityTest? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_test)
        holdr = Holdr_ActivityTest(findViewById(android.R.id.content))

        //create response
        var response: DevotionalResponse = DevotionalResponse()
        fillInResponse(response)

        //write it to a Bundle
        var newBundle: Bundle = Bundle()
        newBundle.putParcelable(DEVOTIONAL_RESPONSE, response)

        //read it from the new Bundle
        var newResponse: DevotionalResponse = newBundle.getParcelable(DEVOTIONAL_RESPONSE)

        //check that they're the same
        assert(newResponse.getDevotionals().get(0).getContent().equalsIgnoreCase(response.getDevotionals().get(0).getContent()))
    }
}
Run Code Online (Sandbox Code Playgroud)

DevotionalResponse.kt

class DevotionalResponse() : Parcelable {

    @Expose
    var devotionals = arrayListOf<Devotional>();

    constructor(in: Parcel) : this() {
        in.readTypedList(this.devotionals, Devotional.CREATOR)
    }

    override fun describeContents(): Int = 0

    override fun writeToParcel(dest: Parcel, flags: Int) {
        dest.writeTypedList(devotionals)
    }

    companion object {
        @JvmField val CREATOR = object : Parcelable.Creator<DevotionalResponse>() {
            override fun createFromParcel(in: Parcel): DevotionalResponse =
                    DevotionalResponse(in)

            override fun newArray(size: Int): Array<DevotionalResponse?> =
                    arrayOfNulls(size)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

继续此链接获取完整解决方案

Kotlin对象示例