我们假设我有片段1和片段2。
片段1创建一个Person
对象,并将name
属性设置为“George”。
片段1然后创建片段2,将Person对象作为Parcelable
传递,然后将片段2推送到后栈。
片段2读取parcelable。之后,片段2将name
的{{1}}更改为Nancy。
用户点击后退按钮,将片段2弹出堆栈并返回片段1。
现在我们回到片段1中,Person
对象的Person
属性是什么?是乔治还是南希?
答案 0 :(得分:3)
似乎在Fragment2
中你获得的实际上是对来自Fragment1
的parcelable对象的引用。这样,您可以得出您正在修改同一个对象的结论。
Parcel的一个不寻常的功能是能够读取和写入活动对象。对于这些对象,不写入对象的实际内容,而是写入引用该对象的特殊标记。从Parcel中读取对象时,您不会获得该对象的新实例,而是获取对最初编写的完全相同对象进行操作的句柄。
如果它可以帮助你知道该怎么做;)
干杯!