【发布时间】:2023-03-06 13:10:02
【问题描述】:
我想通过意图传递自定义对象数组。
val valuesToBeSent = listOf(
RSSSource("title", "someurl"),
RSSSource("title2", "someurl")
).toTypedArray()
val i = Intent(this, SecondActivity::class.java)
i.putExtra("SOURCES", valuesToBeSent)
startActivity(i)
//ONSECOND ACTIVITY
val rssSources = intent?.extras?.getSerializable("SOURCES") as? Array<RSSSource>
我可以将这样的值从一个活动传递到另一个活动。但是当我尝试类型转换值时,它在 android studio 中给出了以下警告。我将列表转换为类型化数组,因为列表不能作为附加值传递。
此外,即使我忽略警告,我也可以在支持 SDK > 21 的设备中访问第二个活动中的数组值,但在支持 SDK 19 的设备中,它会使应用程序崩溃。
通过 Intent 发送自定义对象数组的正确方法是什么?
【问题讨论】:
-
我不知道它在21 api及以上是如何工作的!因为 kotlin list 没有实现可序列化,你可能想要使用 Arraylist 来代替。所以把arrayList放在意图中,事情应该没问题
-
我不是有意发送列表,而是一个 TypedArray。
-
是的,你是对的。类型化数组。但是您的问题是“通过意图发送自定义对象数组的正确方法是什么?”。我分享了我的看法。如果您需要序列化 - 使用 ArrayList (或其他可序列化实体)。如果你在 KitKat 上遇到了一些奇怪的崩溃,很高兴看到它的详细信息。我从来没有遇到过这样的问题...
标签: android android-intent kotlin casting