1

我正在尝试使用以下代码将 ParseObjects 的 arrayList 从一个活动发送到另一个活动:

Intent intent = new Intent(MainActivity2.this, Activity2.class);
intent.putExtra("arrayList", list);
startActivity(intent);

其中 list 是从 ArrayList 表示的解析查询获得的 ParseObjects 的 arrayList。一些 ParseObjects 是 unParcebale,因为它们包含 ParseFile 和 Location 数据。

我不断收到错误:

java.lang.RuntimeException: Parcel: unable to marshal value com.parse.ParseObject@b308c828

如何摆脱此错误并成功发送并在第二个 Activity 中获取 ArrayList?谢谢

4

2 回答 2

3

ParseObject既不是 Serializable 也不是 Parcelable。您必须使用自定义包装器来发送所需的数据并在新 Activity 上重建 ParseObject。

于 2014-08-12T12:45:22.397 回答
1

您无法将不属于此处所示类型之一的其他活动(或片段)传递给其他活动。最重要的是,您要传递的对象必须是 Serializable 或 Parcelable。尝试Jamie Chapman 的 ParseProxyObject,它将 ParseObject 包装在 Serializable 中,可在此处找到。但请先查看Serializable 的文档

明智地实现可序列化

有关序列化 API 的全面介绍,请参阅 Effective Java 关于序列化的章节。这本书解释了如何在不损害应用程序可维护性的情况下使用这个接口。

推荐的替代品

JSON 简洁、易读且高效。Android 包括一个流式 API 和一个树形 API 来读取和写入 JSON。使用像 GSON 这样的绑定库直接读写 Java 对象。

于 2014-08-12T12:57:41.837 回答