如何通过意图在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
玩的开心
您的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 }