1

Fragment 1 と Fragment 2 があるとします。

フラグメント 1 はPersonオブジェクトを作成し、nameプロパティを「George」に設定します。

次にフラグメント 1 はフラグメント 2 を作成し、Person オブジェクトを として渡し、Parcelableフラグメント 2 をバックスタックにプッシュします。

フラグメント 2 はパーセルブルを読み取ります。その後、Fragment 2nameは のPersonを Nancy に変更します。

ユーザーが戻るボタンを押すと、フラグメント 2 がスタックからポップされ、フラグメント 1 に戻ります。

Fragment 1 に戻ると、Personオブジェクトのプロパティは何になるでしょうか? nameジョージまたはナンシーに設定されていますか?

4

1 に答える 1

3

Fragment2取得するのは、実際にはからのパーセル可能なオブジェクトへの参照であるようですFragment1。このようにして、同じオブジェクトを変更しているという結論を出すことができます。

Androidドキュメント:

Parcelの珍しい機能は、アクティブオブジェクトの読み取りと書き込みの機能です。これらのオブジェクトの場合、オブジェクトの実際の内容は書き込まれず、オブジェクトを参照する特別なトークンが書き込まれます。パーセルからオブジェクトを読み戻すと、オブジェクトの新しいインスタンスは取得されませんが、最初に書き込まれたのとまったく同じオブジェクトを操作するハンドルが取得されます。

それがあなたが何をすべきかを知るのに役立つなら;)

乾杯!

于 2013-01-14T19:08:55.913 に答える