2010-06-24 4 views
1

특정 데이터베이스 작업을 수행 한 후 Cursor를 SimpleCursorAdapter에 연결하여 ListActivity의 List를 표시합니다. 드디어 블록에 커서를 닫습니다 (또는 어디 아래 코드 후), 아무것도 커서가 닫혀 있지 않은 경우 목록SimpleCursorAdapter로 설정할 때 커서를 닫을 수 없습니다.

SimpleCursorAdapter scAdapter = new SimpleCursorAdapter(this, 
      R.layout.list_row, cursor, 
      new String[] { Constants.KEY_TITLE }, new int[] { R.id.text1 }); 

에 표시되지 않으면 활동이 다른 활동 요청을 만들거나 부동태 때, 안드로이드는 예외가 발생합니다 .

추신 : 나는 onPause() 내부에서 커서를 닫으려고했으나 onPause가 호출되기 전에 안드로이드가 불평합니다.

답변

4

finally 블록에 커서를 놓아 둬야합니다.

귀하의 활동을 전화하지 않으 셨습니다.

startManagingCursor(cursor); 

이렇게하면 활동이 커서를 관리하는지 확인합니다.

+1

안드로이드의 최신 버전에서 비틀 거린 사람들을 위해,'startManagingCursor'는 더 이상 사용되지 않습니다. –

0

문제의 일부분 만 해결합니다. startManagedCursor (커서); 메뉴 키> menuActivity를 누른 다음 뒤로 키를 누릅니다.

ERROR/Cursor(4047): Invalid statement in fillWindow() 
3

나는 커서를 날아 다니는 것으로이 문제를 해결합니다. SimpleCursorAdapter가 커서를 관리하는 것으로 보입니다.

SimpleCursorAdapter scAdapter = new SimpleCursorAdapter(this, 
     R.layout.list_row, db.query(...), 
     new String[] { Constants.KEY_TITLE }, new int[] { R.id.text1 }); 

또한 펜티엄 10의 게시물부터 startManagingCursor가 더 이상 사용되지 않습니다.

관련 문제