1

次のコードを使用して、ParseObjects の arrayList をあるアクティビティから別のアクティビティに送信しようとしています。

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

list は、ArrayList で示される解析クエリから取得された ParseObjects の arrayList です。一部の ParseObjects は、ParseFile および Location データを含むため、Parcebale ではありません。

エラーが発生し続けます:

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

このエラーを取り除き、2 番目のアクティビティで ArrayList を正常に送信して取得するにはどうすればよいですか? ありがとう

4

2 に答える 2

1

ここに示されているタイプのいずれでもない他のアクティビティ (またはフラグメント) に何かを渡す方法はありません。最も重要なことは、渡すオブジェクトが Serializable または Parcelable である必要があることです。ParseObject を Serializable でラップするJamie Chapman の ParseProxyObjectを試してください。ただし、最初に Serializable のドキュメントを確認してください。

Serializable を慎重に実装する

シリアライゼーション API の詳細については、Effective Java のシリアライゼーションに関する章を参照してください。この本は、アプリケーションの保守性を損なわずにこのインターフェースを使用する方法を説明しています。

推奨される代替手段

JSON は簡潔で、人間が判読でき、効率的です。Android には、JSON を読み書きするためのストリーミング API とツリー API の両方が含まれています。GSON などのバインド ライブラリを使用して、Java オブジェクトを直接読み書きします。

于 2014-08-12T12:57:41.837 に答える