我发现在将可序列化的数据作为intent额外信息传递时存在一种奇怪的行为,我想澄清是否有些东西我没有注意到。
所以我尝试的事情是,在ActivtyA
中,我将一个LinkedList
实例放入了我创建用于启动下一个活动-ActivityB
的intent
中。
LinkedList<Item> items = (some operation);
Intent intent = new Intent(this, ActivityB.class);
intent.putExtra(AppConstants.KEY_ITEMS, items);
在ActivityB的onCreate方法中,我尝试按如下方式检索LinkedList类型的Extra:LinkedList<Item> items = (LinkedList<Item>) getIntent()
.getSerializableExtra(AppConstants.KEY_ITEMS);
运行时,我一直在ActivityB
上收到一个ClassCastException
异常,就在上面的那一行。基本上,异常提示我正在接收一个ArrayList
。一旦我将上面的代码更改为接收ArrayList
,一切都正常了。
现在我无法从现有文档中找出在Android上传递可序列化列表实现是否是预期行为。或者,我的做法存在根本性错误。
谢谢。
LinkedList
会出现这种行为,而如果我在intent
上添加了一个ArrayList
实例作为额外数据,一切都会很好。并且,我不需要使用Parcelable
吗? - anirvanArrayList<CustomObject>
。只有原始类型的 ArrayList 是允许的,即String
或Integer
。 - Lalit PoptaniCustomObject
实现了Serializable
接口,这样做就没有问题。而且它可以正常工作。 - anirvan