1

全部,

考虑以下数据结构:

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

但接收意图抛出异常“Parcelable:无法编组”

AFAICT ArrayList 应该是可序列化的,所以我不明白为什么会出现异常。

有人可以在这里安排一些灯光吗?

谢谢你。

4

3 回答 3

3

AFAICT ArrayList 应该是可序列化的

是的,但你没有什么都ArrayList没有——你有一个ArrayList对象Foo

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

因为Foo不是Serializable

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

较少编程的答案是让您实现Serializableon Foo,在这种情况下,您的 currentputExra()应该可以工作。

于 2013-06-14T21:31:46.930 回答
1

您必须使您的自定义对象可串行化。这是文档

可序列化

于 2013-06-14T21:31:41.340 回答
1
Bundle bundle = new Bundle();
bundle.putSerializable("object", yourobject);
startActivity(new Intent(this,Myclass.class).putExtras(bundle);

你的对象类应该实现Serializableor 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;
};
于 2013-06-14T21:34:17.620 回答