ALL,
考虑以下数据结构:
class Foo
{
private int m1;
private double m2;
};
class Bar
{
private int m1;
private List<Foo> m2;
};
现在我想做的是将Bar :: m2从一个活动传递到另一个活动。 Bar中的数据位于列表视图中,并选择我需要传递适当列表m2结构的行。
最好的方法是什么? 我试过的是:
Intent intent = new Intent();
intent.putExtra( "test", new ArrayList<Foo> );
但是接收意图引发了异常&#34; Parcelable:无法编组&#34;
AFAICT ArrayList应该是可序列化的,所以我不明白为什么我会得到例外。
有人可以在这里掏出一些光吗?
谢谢。
答案 0 :(得分:3)
AFAICT ArrayList应该是可序列化的
是的,但您没有ArrayList
什么都没有 - 您有ArrayList
个Foo
个对象。
我不明白为什么我会遇到异常
因为Foo
不是Serializable
。
有效的答案是您在Parcelable
上实施Foo
支持,然后在putParcelableArrayListExtra()
上使用Intent
。
编程较少的答案是您在Serializable
上实施Foo
,在这种情况下,您当前的putExra()
应该有效。
答案 1 :(得分:1)
您必须使自定义对象具有可连续性。这是文档
答案 2 :(得分:1)
Bundle bundle = new Bundle();
bundle.putSerializable("object", yourobject);
startActivity(new Intent(this,Myclass.class).putExtras(bundle);
您的对象类应该实现Serializable
或Parcelable
。
class Foo implements Serializable
{
/**
*
*/
private static final long serialVersionUID = 1L;
private int m1;
private double m2;
};
class Bar implements Serializable
{
/**
*
*/
private static final long serialVersionUID = 1L;
private int m1;
private List<Foo> m2;
};