安卓:问题Serializable对象投入的意图(android: problem with Ser

2019-07-21 21:27发布

嗨,我有一类我想将其放入putExtras()其序列化的意图传递问题,代码如下所示:

public abstract class ObjectA extends ArrayList<ObjectA> implements java.io.Serializable{...}

public class ObjectB extends ObjectA {...}


...
Bundle extras = new Bundle();
extras.putSerializable("blabla", ObjectB);
intent.putExtras(extras);

...

Object y = getIntent().getExtras().get("blabla");

问题是,使y现在是一个ArrayList和不再是一个对象B,所以我不能丢..如果我更改代码

public class ObjectB implements java.io.Serializable {...}

它工作正常

Answer 1:

通过在你的类实现两者的java.util.List和了java.io.Serializable你触发这个机器人的错误 。



Answer 2:

我怀疑这是怎么回事的是,因为你没有申报对象B为可序列化它的“回落”到最近的父对象即是。 所以,当你把它给你包未实际投入对象B,但对象B转换回ArrayList中。

我认为你将不得不去与第二(“工作正常”)代码。



Answer 3:

你如何申报对象B你将它传递到集合前? 从我明白你的问题,你要删除它时,没有得到错误当你在捆绑过程,只。 尝试retreiving你的对象B到对象B型直接是这样的:

ObjectB y = (ObjectB) getIntent().getExtras().get("blabla");


Answer 4:

ObjectAArrayList应该实现接口Parcelable 。 之后,你可以放在你的意图的ArrayList,并让他们在另一个活动。



文章来源: android: problem with Serializable object put into intent