Android<ParseObject> 在 Android 上的活动之间发送 ArrayList 时出错。包裹:无法封送值com.parse.ParseObject@b308c828错误



我试图发送ParseObjects的数组列表从一个活动到另一个与以下代码:

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

,其中list为从解析查询中获得的ParseObjects的数组列表,表示为arrayList。一些parseobject是不可parsebale的,因为它们包含ParseFile和Location数据。

我一直得到错误:

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

我如何摆脱这个错误,并成功发送,然后在第二个活动中获得数组列表?由于

ParseObject不是Serializable,也不是Parcelable。你必须使用自定义包装器来发送你想要的数据,并在新的Activity上重建你的ParseObject。

如果不是这里显示的类型之一,您就无法将某些内容传递给其他Activities(也不是Fragments)。最重要的是,要传递的对象必须是可序列化的或可Parcelable的。试试Jamie Chapman的ParseProxyObject,它将ParseObject封装在一个Serializable中,在这里找到。但是请先查看Serializable的文档:

合理实现Serializable

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

推荐选择

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

最新更新