как объединить намерения db4o и android

Я делаю (свое первое) приложение для Android и немного озадачен использованием db4o.

У меня есть одно действие, в котором у меня есть listView, и я позволяю пользователю выбирать объект. Затем я передаю этот объект через серию намерений другим действиям (для заполнения его полей), а затем возвращаюсь к основному действию.

Но проблема в том, что когда я передаю объект (он сериализуемый), объект, который я получаю из намерения, не совпадает с тем, который я ввел (другой идентификатор, когда я проверяю с помощью отладки). Все поля одинаковы, но это просто не «один и тот же» объект.

Поэтому, когда я пытаюсь сохранить обновленный объект в db4o, он не распознает его и сохраняет double.

Я нашел два обходных пути:

  • Также передайте «исходный / немодифицированный» объект и используйте его для получения ссылки на db4o (через QBE), а затем обновите поля этого объекта значениями измененного объекта.

  • Использование глобальных переменных, поэтому мне не нужно использовать намерения (для передачи объекта)

Но оба кажутся мне очень плохими? Что может быть реальным решением вместо обходного пути?


person SeaTrue    schedule 27.03.2013    source источник


Ответы (1)


Вы можете попробовать использовать синглтон для хранения вашего объекта и полей, которые должны быть установлены другими классами (?), Чтобы у всех был доступ. Я не понимаю, как вы использовали намерения в этом объяснении.

person Dave    schedule 27.03.2013
comment
Пример сценария использования: у меня есть список объектов в одном действии. Когда я нажимаю на объект, я отправляю намерение из основного действия другому действию, где я могу редактировать объект. Сам объект отправляется вместе с намерением как сериализуемое дополнение; Закончив редактирование, я отправляю (теперь отредактированный) объект обратно в основное действие, где сохраняю его. «Одноэлементный» подход - это то, что я имел в виду, когда сказал в своем вопросе «использование глобальных переменных». Но кажется неправильным делать это в такой ситуации? - person SeaTrue; 27.03.2013
comment
Если вы хотите передать свои намерения, создайте класс, содержащий информацию, и передайте ее вместо этого. Синглтон не похож на старые глобальные переменные, это класс, который может существовать только один раз. Если это философские дебаты, это правильный подход. - person Dave; 27.03.2013
comment
Я реализовал одноэлементный подход; Отлично работает! Благодарность - person SeaTrue; 28.03.2013