У меня есть объект Custom Type, который реализует Serializable, и я могу успешно передать этот объект через мои действия.Дополнительные намерения не передаются по ссылке?
Сейчас ситуация такова:
О деятельности 1 экземпляр CustomObject имеет свойство типа String со значением «A» устанавливается и передается на операцию 2 как Extra:
Intent intent = new Intent(getApplicationContext(), Activity_2.class);
intent.putExtra("CUSTOM_OBJECT", customObjectInstance);
startActivityForResult(intent, 0);
В Activity 2 я извлекаю CustomObject из Intent и изменяю значение свойства от «A» до «B».
Когда я нажимаю кнопку «Назад», перейдя из операции 2 обратно в «Активность 1», значение свойства CustomObject снова «A»!
Я проверил хэш-код объекта и подтвердил, что это тот же экземпляр для обеих операций, и до сих пор не может понять, почему это происходит.
EDIT:
В соответствии с просьбой, о коде, где я установить значение свойства, это так просто, как это может быть:
На активность 2:
CustomObject obj = (CustomObject) getIntent().getExtras().getSerializable("CUSTOM_OBJECT");
obj.setProperty("B");
Пожалуйста, отправьте код, в котором вы указали свойство. Java передает * все * по значению. Когда вы передаете «объект», вы передаете копию значения ссылки на объект. Это просто длинный int. Объект существует в адресе памяти A. Экземпляр объекта в Activity 1 на самом деле является указателем на адрес A, сохраненным в адресе B. Действие 2 получает копию этого указателя, сохраненную в адресе C. Ничто из этого не отвечает на ваш вопрос, который, поскольку появляются указатели чтобы быть одинаковым, является нечетным. Обратите внимание, что hash equals не гарантирует «тот же объект». http://www.ibm.com/developerworks/java/library/j-jtp05273/index.html – Simon
Кстати, пожалуйста, также покажите, как вы читаете значение из дополнительных функций в действии 2. – Simon
Так что вы говорите, что если мне нужно будет модифицировать и прочитать экземпляр одного объекта из двух разных видов деятельности, я должен пойти с глобальной переменной? – Aquanauta