gpt4 book ai didi

android - Intent extras 不是通过引用传递的吗?

转载 作者:行者123 更新时间:2023-11-29 00:30:11 24 4
gpt4 key购买 nike

我有一个实现 Serializable 的自定义类型对象,我能够通过我的 Activity 成功传递该对象。

现在情况是这样的:

在 Activity 1 上,CustomObject 实例有一个设置了值“A”的 String 属性,并作为 Extra 传递给 Activity 2:

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

startActivityForResult(intent, 0);

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

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

我检查了对象的哈希码并确认在两个 Activity 上是同一个实例,但仍然无法弄清楚为什么会发生这种情况。

编辑:

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

关于 Activity 2:

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

最佳答案

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

尽管您表示两个对象的哈希码相同,但我很确定每个 Activity 都处理自己的一组局部变量。在您的测试中, Activity A 和 B 中的对象相互独立。

希望对您有所帮助。

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com