如何在活动之间传递对象?

时间:2013-06-14 21:26:27

标签: android list android-intent

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应该是可序列化的,所以我不明白为什么我会得到例外。

有人可以在这里掏出一些光吗?

谢谢。

3 个答案:

答案 0 :(得分:3)

  

AFAICT ArrayList应该是可序列化的

是的,但您没有ArrayList什么都没有 - 您有ArrayListFoo个对象。

  

我不明白为什么我会遇到异常

因为Foo不是Serializable

有效的答案是您在Parcelable上实施Foo支持,然后在putParcelableArrayListExtra()上使用Intent

编程较少的答案是您在Serializable上实施Foo,在这种情况下,您当前的putExra()应该有效。

答案 1 :(得分:1)

您必须使自定义对象具有可连续性。这是文档

Serializable

答案 2 :(得分:1)

Bundle bundle = new Bundle();
bundle.putSerializable("object", yourobject);
startActivity(new Intent(this,Myclass.class).putExtras(bundle);

您的对象类应该实现SerializableParcelable

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;
};