2013-03-27 2 views
0

나는 (내 첫 번째) 안드로이드 응용 프로그램을 만들고 있는데, db4o를 사용하여 약간 당황 스럽다.db4o와 android intents를 결합하는 방법

나는 listView가있는 하나의 활동을 가지며 사용자가 객체를 선택할 수 있도록합니다. 그런 다음이 객체 물마루를 일련의 의도를 다른 활동 (필드 채우기)에 전달한 다음 주요 활동으로 되돌립니다.

하지만 문제는 객체를 전달할 때 (직렬화 가능), 의도를 벗어나는 객체가 내가 넣은 객체와 같지 않다는 것입니다 (다른 ID, 디버그로 확인할 때). 모든 필드는 동일하지만 '같은'개체가 아닙니다.

그래서 업데이트 된 개체를 db4o에 저장하려고 시도하면 db4o는이를 인식하지 못하고 double을 저장합니다.

나는 두 가지 해결 방법을 알아 냈어요 :

또한
  • 는 '원본/수정되지 않은'개체를 전달하고, (QBE를 통해) db4o는 참조를 얻기 위해 그것을 사용을하고 그 객체의 필드를 업데이트 변경된 오브젝트의 값과 비교합니다. 나는 텐트를 사용하지 않아도

  • 전역 변수를 사용하여

(객체를 전달하는) 그러나 모두는 나에게 정말 나쁜 것? 해결 방법 대신 실제 해결책이 될 수 있습니까?

답변

0

개체를 저장하는 데 싱글 톤을 사용하고 다른 클래스 (?)가 모든 사용자가 액세스 할 수 있도록 설정해야하는 필드를 사용해 볼 수 있습니다. 나는이 설명에서 당신의 의도를 분명히 사용하지 않고 있습니다.

+0

예제 사용 시나리오 : 하나의 활동에 개체 목록이 있습니다. 객체를 클릭하면 기본 활동에서 인 텐트를 편집 할 수있는 다른 활동으로 인 텐트를 보냅니다. 객체 자체는 직렬화 가능 엑스트라로서 의도와 함께 전송됩니다. 편집이 끝나면 (현재 편집 된) 객체를 주 활동으로 되돌려 보내 저장합니다. '싱글 톤'접근법은 내 질문에 '전역 변수 사용'이라고 말했을 때의 의미입니다. 그러나 이런 상황에서 이것을하는 것은 잘못된 것처럼 보입니까? – SeaTrue

+0

의도를 전달하려면 정보를 보유하는 클래스를 만들어 대신 전달하십시오. 싱글 톤은 이전 전역 변수와 같지 않습니다. 단 한 번만 존재할 수있는 클래스입니다. 그것이 철학적 논쟁이라면, 그것은 유효한 접근법이다. – Dave

+0

싱글 톤 접근 방식을 구현했습니다. 잘 작동합니다! 감사 – SeaTrue

관련 문제