android - 如何在 Activity 之间传递对象?

标签 android list android-intent

全部,

考虑以下数据结构:

class Foo
{
private int m1;
private double m2;
};

class Bar
{
private int m1;
private List<Foo> m2;
};

现在我要做的是将 Bar::m2 从一个 Activity 传递到另一个 Activity 。 Bar 中的数据在 ListView 中,选择行我需要传递适当的列表 m2 结构。

最好的方法是什么? 我试过的是这样的:

Intent intent = new Intent();
intent.putExtra( "test", new ArrayList<Foo> );

但是接收 Intent 抛出一个异常“Parcelable: Unable to marshall”

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

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

谢谢。

最佳答案

AFAICT ArrayList should be serializable

是的,但您没有 ArrayList一无所有——你有一个 ArrayListFoo对象。

I don't understand why I'm getting an exception

因为 Foo不是 Serializable .

有效的答案是让您实现 Parcelable支持Foo , 然后使用 putParcelableArrayListExtra()在你的 Intent .

较少编程的答案是让你实现 SerializableFoo ,在这种情况下,您当前的 putExra()应该可以。

关于android - 如何在 Activity 之间传递对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17117540/

相关文章:

Android:为以编程方式创建的 TextView 设置文本颜色

android - 从 res/raw 读取文件 .txt 并将其显示到 ListView 中

python - 如何从间隔开的列表中提取多个字符串

list - 类型 ('a -> ' b) list 的函数 -> OCaml 中的 'a -> ' b list

list - 追加到列表 F# 的开头

android - 取消并重新创建新的 PendingIntent

android - 从其唯一整数中获取资源(字符串)

java - 如何将 Action 添加到 libgdx 中的纹理打包程序?

android - Android Play Game Services 如何重新定义显示玩家成就的默认 Activity ?

android - 使用 EXTRA_PLUGGED 获取 USB 电缆插入 IN/OUT 事件不起作用