嗨我有一个类的问题我想通过把它放入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而不再是ObjectB,所以我不能抛出它.. 如果我将代码更改为
public class ObjectB implements java.io.Serializable {...}
一切正常
答案 0 :(得分:14)
通过在类中实现java.util.List和java.io.Serializable,您已触发此android bug。
答案 1 :(得分:0)
我怀疑发生的事情是因为你没有声明ObjectB是可序列化的,所以它“退回”到最近的父对象。所以当你把它放到Bundle中时,你实际上并没有放入ObjectB,而是将ObjectB强制转换回ArrayList。
我认为你将不得不使用第二个(“工作正常”)代码。
答案 2 :(得分:0)
在将ObjectB传递给捆绑包之前,如何声明它? 根据我对您的问题的理解,当您传入捆绑包时,只有在删除它时才会收到错误。 尝试将ObjectB直接转换为ObjectB类型,如下所示:
ObjectB y = (ObjectB) getIntent().getExtras().get("blabla");
答案 3 :(得分:0)
ObjectA
中的ArrayList
应实现接口Parcelable
。之后,您可以将您的arraylists置于意图中,并将其置于另一项活动中。