片段,Parcelable对象和Back Stack

时间:2013-01-14 18:49:04

标签: android android-fragments fragment

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

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

片段1然后创建片段2,将Person对象作为Parcelable传递,然后将片段2推送到后栈。

片段2读取parcelable。之后,片段2将name的{​​{1}}更改为Nancy。

用户点击后退按钮,将片段2弹出堆栈并返回片段1。

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

1 个答案:

答案 0 :(得分:3)

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

Android docs:

  

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

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

干杯!