Intent和getSerializableExtra值返回

时间:2015-05-15 15:11:14

标签: android android-intent android-activity parameters parameter-passing

onCreate我获得了一个额外的序列化,从意图到我活动的itemsList

itemsList = (ArrayList<HashMap<String, String>>) intent
  .getSerializableExtra("sliding_menu_content");

然后在活动中我将一些其他地图元素添加到itemsList数组中。 令我惊讶的是,更改设备的方向,getSerializableExtra将返回itemsList的更新状态,包括所有地图元素添加。怎么可能?

修改
我的通话活动会增加这样的额外内容

ArrayList<HashMap<String, String>> startingList = 
   new ArrayList<HashMap<String, String>>();
i.putExtra("sliding_menu_content", startingList);
startActivity(i);

因为我理解传递参数,这是一个评估的假设,当我通过itemsList分配getSerializableExtra时,我得不到<值>的值的副本但我得到了< strong>指针的副本到调用活动传递的原始对象(即startingList),然后每次更新都是对原始值的更新。

1 个答案:

答案 0 :(得分:1)

你应该知道Intent.putExtra()和Intent.getSerializable()是如何工作的。 Intent使用Bundle来保存参数,如果它不是进程间意图内部Bundle只是将原始对象保存在数据映射中。 ,对象将不被复制(做无组件和包裹的东西),所以你得到的仍然是原始对象。