通过intent将对象数组从activity传递到service



我正在努力如何通过意图将一个数组与对象从活动传递到服务。调试后,我可以说我的服务甚至没有启动,因为错误java.lang。RuntimeException: Parcel: cannot to marshal value (Item(id=0, data=2023-01-02T02:07:11.051, message=123, isValid=false.

listViewModel.itemList.observe(this) {
listAdapter.setList(it)
recyclerView.adapter = listAdapter
val i = Intent(this, FileService::class.java)
val bundle = Bundle()
bundle.putSerializable("data", it)
i.putExtras(bundle)
startService(i)
}

和我的数据类

@Serializable
data class Item(val id: Int,
val data: LocalDateTime? = Clock.System.now().toLocalDateTime(TimeZone.UTC),
val message: String,
var isValid: Boolean? = false)

你可以看到我没有使用parcelable。我不知道该怎么办。

你得到这个错误是因为你使用了@Serializable而不是Serializable类。

你需要让Item类Serializable。为了使Item类可序列化,我必须在类的末尾添加:serializable以使其可序列化。就像这样

class ExampleClass(val price: Double, val discountedPrice: Double) : Serializable

确保像这样导入Serializable

import java.io.Serializable

相关内容

  • 没有找到相关文章

最新更新