1

1 つのアクティビティで 2 つの異なるフラグメントを使用しています。フラグメントの 1 つはリストを含み、もう 1 つはリストの各要素の詳細ビューを含みます。アクティビティがフラグメントを作成すると、2 つのオブジェクトが新しいインスタンスのパラメーターとして渡されます。

これは、内部に多くのフィールド (BigIntegers、ArrayLists、Strings..) を持つ複雑なオブジェクトです。このオブジェクトは、フラグメントで使用するために Parcelable を実装しています。情報がフラグメントを介して渡される場合、データの解析には問題はありません。実際には、このオブジェクトは、フラグメント間でパラメーターとして渡すためではなく、状態を保存するためにパーセル可能である必要があると思います。

このオブジェクトは、メイン オブジェクトへの参照を含むオブジェクトのリスト内に含まれます。O1 をオブジェクト 1、O2 をオブジェクト 2 とすると、これは「グラフィカルな」説明になります。

O1:

  • BigInteger
  • 配列リスト
  • ....
  • 配列リスト

O2:

  • BigInteger
  • O1<-------- これは O1 オブジェクトへの参照です

(電話でホームをクリックして) アクティビティを終了し、状態を保存しようとすると、StarOverflow エラーが発生します。参照ではなくオブジェクト全体を保存しようとして、parcelable が無限ループに入ることに関連している可能性がありますか? Android でパーセル可能なオブジェクトを処理する際に、多くのトラブルに遭遇しました。

4

1 に答える 1

0

Parcelable とその動作方法に精通しているわけではありませんが、私には参照ループのように見えます。つまり、オブジェクトは 1 つ以上のプロパティを介してそれ自体に参照されます。

インスタンスのいずれかにループバックできる場合は、Parcelables のクラス定義を参照してください。

于 2012-11-01T23:57:32.447 に答える