在kotlin中创建一个parcelable对象

在kotlin中创建一个parcelable对象在活动之间传递数据的最佳方法?

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

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

去这个链接完整的解决方案

Kotlin对象示例

用Serializable实现你的类。 假设这是你的实体类:

 import java.io.Serializable class Student(var id: Double, var name: String?) : Serializable 

我们把一个叫做mStudent的对象从一个活动发送给另一个活动,在第一个活动中:

 val mStudent = Student(1.0, "XYZ") val mIntent = Intent(this, Main5Activity::class.java) mIntent.putExtra("sampleObject", mStudent) startActivity(mIntent) 

在另一个活动中,我们得到的对象如下:

 val i = intent val mStudent = i.getSerializableExtra("sampleObject") as Student