gpt4 book ai didi

android - 包裹 : unable to marshal value

转载 作者:行者123 更新时间:2023-11-29 15:00:56 26 4
gpt4 key购买 nike

我将 Kotlin 与 Anko 一起使用,我想向另一个 Activity 发送玩家列表。

class Player(var name: String?) {
var score: Int = 0

init {
this.score = 0
}
}

我的 Activity :

 class MainActivity: AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle ? ) {
btn.setOnClickListener {
val players = ArrayList <Player> ()
players.add(Player("John"))
players.add(Player("Jeff"))

startActivity <ScoreActivity> ("key" to players)
}
}
}

当代码到达 startActivity 行时,出现此错误:

java.lang.RuntimeException: Parcel: unable to marshal value com.yasin.myapp.Player@4e3940e

我想我的 Player 类有问题,但我不知道是什么。我使用的是 Kotlin 版本 1.1.4。有人可以帮助我吗?

最佳答案

你的类应该实现Parcelable(或Serializable,虽然Parcelable在Android上是推荐的)以便能够传递对象使用 Intent 的 Activity 。

使用 Kotlin 1.1.4 和 Android Extensions Plugin ,您可以添加 @Parcelize 注释来获取 Parcelable 实现。

@Parcelize
class Player(var name: String?) : Parcelable {

// ...

引用blog post .

这个功能是实验性的,所以你已经在你的 build.gradle 文件中打开了一个实验性的标志:

androidExtensions {
experimental = true
}

另一种选择是使用 this plugin生成 Parcelable 实现所需的样板代码,但您应该记住,每次更改类中的任何属性时都要更新实现代码。

或者您可以编写自己的Parcelable 实现。

关于android - 包裹 : unable to marshal value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45840605/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com