我有一个实现了Serializable的Custom Type对象,并且能够成功地通过我的Activity传递该对象。

现在的情况是这样的:

在活动1上,CustomObject实例具有设置为值“ A”的String属性,并作为Extra传递给活动2:

Intent intent = new Intent(getApplicationContext(), Activity_2.class);
intent.putExtra("CUSTOM_OBJECT", customObjectInstance);

startActivityForResult(intent, 0);


在活动2上,我从Intent中检索CustomObject,并将属性值从“ A”修改为“ B”。

当我按下后退按钮时,从活动2返回活动1,CustomObject属性的值再次为“ A”!

我检查了对象的哈希码,并确认这是两个Activity上的相同实例,但仍然无法弄清为什么会这样。

编辑:

根据要求,关于我设置属性值的代码,它非常简单:

活动2:

CustomObject obj = (CustomObject) getIntent().getExtras().getSerializable("CUSTOM_OBJECT");
obj.setProperty("B");

最佳答案

Intent的Extras仅包含值。您可以通过扩展Application类并部署“全局”变量来通过引用来处理参数。

尽管您表示两个对象的哈希码是相同的,但我敢肯定每个Activity都会处理自己的一组局部变量。在您的测试中,活动A和活动B中的对象彼此独立。

希望能帮助到你。

关于android - Intent 额外内容不是通过引用传递的吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16202274/

10-09 07:09
查看更多