1

假设我有片段 1 和片段 2。

片段 1 创建一个Person对象并将name属性设置为“George”。

Fragment 1 然后创建 Fragment 2,将 Person 对象作为 a 传递Parcelable,然后将 Fragment 2 推入回栈。

片段 2 读入 parcelable。后来,Fragment 2 将 的 更改namePersonNancy。

用户点击后退按钮,将 Fragment 2 从堆栈中弹出并返回到 Fragment 1。

现在我们回到片段 1,Person对象的属性是什么?name是乔治还是南希?

4

1 回答 1

3

看起来Fragment2你得到的实际上是对 parcelable 对象的引用Fragment1。这样,您可以得出您正在修改同一个对象的结论。

安卓文档:

Parcel 的一个不同寻常的功能是能够读取和写入活动对象。对于这些对象,不会写入对象的实际内容,而是写入引用该对象的特殊标记。从 Parcel 中读回对象时,您不会获得该对象的新实例,而是获得一个句柄,该句柄对最初写入的完全相同的对象进行操作。

如果它可以帮助您知道该怎么做;)

干杯!

于 2013-01-14T19:08:55.913 回答