테이블 행 (테이블에 행을 삽입 할 때 자동으로 생성 됨)에 대해 다음으로 사용할 수있는 ID를 얻는 방법은 없으므로 삽입하지 않아도됩니다 그 행을 주어진 시간에 얻으려면?greenDao 자동 증분 ID를받습니다
정확하게 말하면 : 나는 목록보기를 포함하는 활동을 가지고 있으며, 각 항목은 두 번째 활동을 사용하여 추가됩니다. 두 번째 액티비티에서 아이템 세부 사항을 추가하는 작업을 마쳤을 때, 필자는 해당 아이템을 필사적 객체 (parcelable object)로 전달합니다. 나는 DaoGenerator가 생성 한 홀더 클래스 중 하나에 Parcelable Interface를 구현했습니다. 해당 객체의 id 값은 null 일 수 없으며 writeLong (id)과 함께 전달하고 Parcelable 메서드에서 readLong()을 사용하여받을 수 있으므로 이미 값을 삽입하여 id 값을 자동 생성해야합니다. 데이터베이스 내가하고 싶은 일은 (데이터베이스에 항목을 삽입하지 않고) 해당 ID를 생성하고 첫 번째 활동에 해당 항목을 전달하며 사용자가 목록에서 모든 항목을 저장하기로 결정하면 모든 항목을 데이터베이스에 추가합니다. 단일 거래로
이Question questionHolder = new Question(
null, etItemContent.getText().toString() .trim(),);
Log.d(LOG_TAG, "question id = "
+ questionHolder.getId());
// inserting it here, would auto-generate the ID I required,
// but I would like to do that to all of the items in the first Activity (containing the list of all of the items)
// questionDao.insert(questionHolder);
Log.d(LOG_TAG, "question id = "
+ questionHolder.getId());
// add item to intent
Bundle b = new Bundle();
b.putParcelable(IMPORTANCE_TAG, questionHolder);
Intent intent = new Intent();
intent.putExtras(b);
setResult(RESULT_OK, intent);
QuestionItemActivity.this.finish();
좋은 하나, 내가 Parcelable 플래그로 하나를 선택하고 괜찮아 보인다. 당신이 말하고자하는 것을 조금 설명해 주시겠습니까? "너무 꽉 끼는 커플 링을 만듭니다". – DoruAdryan
. 두 가지 활동이 데이터베이스에 액세스하고 데이터베이스 상태가 변경되지 않는다고 가정합니다. 기본적으로 세 개의 개별 구성 요소가 동기화 된 상태로 작동한다고 가정합니다. (단단히 결합 됨) 기본 사례의 경우이 방법이 유용 할 수 있지만 나중에 데이터베이스에 작업을 추가하는 다른 방법이있을 수 있습니다. 자동 증가 카운터에 영향을줍니다. 이것은 알고리즘의 시간을 깨뜨릴 것이고 더러운 버그를 재현하기 어렵게 될 것입니다. 개체를 자체 포함시킴으로써 향후에 이러한 불쾌한 버그를 피할 수 있습니다. – yigit
답변과 설명에 많은 감사를드립니다. – DoruAdryan