如何通过意图在kotlin传递自定义对象

fun launchNextScreen(context: Context, people: People): Intent { val intent = Intent(context, NextScreenActivity::class.java) intent.putExtra(EXTRA_PEOPLE, (Parcelable) people) //intent.putExtra(EXTRA_PEOPLE, people as Parcelable) //intent.putExtra(EXTRA_PEOPLE, people) // tried above all three ways return intent } 

尝试上面的代码,通过意图使用kotlin传递人类types的人物,但得到错误。 请帮我解决这个问题。

在kotlin开始活动并传递一些数据,你可以尝试这样的事情:

startActivity(intentFor(STRING to data))

玩的开心

您的People类需要像这样实现Parcelable:

 class People(): Parcelable{ // stuff } 

android studio会告诉你一个错误。 简单地将光标移动到“人物”,然后按Alt + Enter。 它现在应该显示生成Parcelable实现的选项。

这个生成的代码将包含类似的东西

 parcel.writeString(member1) parcel.writeInt(member2) 

和其他地方

 member1=parcel.readString() member2=parcel.readInt() 

确保所有成员都包含在这些方法中,并且在修改时确保读取和写入的顺序完全相同。

首先,确定你在People -s类中实现了Serializable

 class People : Serializable { //your stuff } 

确保你的People类的内部字段也实现了Serializable接口,否则你会得到运行时错误。

那么它应该工作:

  fun launchNextScreen(context: Context, people: People): Intent { val intent = Intent(context, NextScreenActivity::class.java) intent.putExtra(EXTRA_PEOPLE, people) return intent }