我想通过意图传递自定义对象的数组。
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中给出了以下警告。我将list转换为类型数组,因为list不能作为额外内容通过intent传递。
即使我忽略了警告,也可以在支持SDK> 21的设备的第二个活动中访问数组的值,但是在支持SDK 19的设备中,它会使应用程序崩溃。
通过意图发送自定义对象数组的正确方法是什么?
答案 0 :(得分:1)
您只需要放入Intent right数据结构。可以序列化的东西。使用ArrayList,为什么不呢?它可以正确序列化,并且像一个sharm。如果我可以通过意图编写用于测试集合序列化的代码,那么我会写这样的东西。
fun testIntent() {
val KEY = "key"
val list = arrayListOf("one", "another")
val intent = Intent().putExtra(KEY, list)
val bundle = intent.getSerializableExtra(KEY) as? java.util.ArrayList<String> ?: emptyList<String>()
assert(bundle[0] == "one")
}