2010-07-12 2 views
5

누군가가 나에게 설명 할 수 나에게 설명 할 수이 StaleDataException사람이`StaleDataException`

07-11 19:58:23.298 E/AndroidRuntime(1044): Uncaught handler: thread main exiting due to uncaught exception 
07-11 19:58:23.368 E/AndroidRuntime(1044): android.database.StaleDataException: Access closed cursor 
07-11 19:58:23.368 E/AndroidRuntime(1044): at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:217) 
07-11 19:58:23.368 E/AndroidRuntime(1044): at android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java:84) 
07-11 19:58:23.368 E/AndroidRuntime(1044): at android.database.CursorWrapper.getInt(CursorWrapper.java:128) 

어떻게 우리가 커서에 REQUIRY을 보장해야합니까, 왜이 예외와 함께 실패?

답변

4

이미 닫힌 Cursor에서 정보를 검색하려고합니다. isClosed 메서드를 사용하여 커서가 닫혔는지 여부를 확인해야합니다.

+0

제발이 문제를 해결하는 데 괜찮은 방법을 제안 해주세요. 현재 staleDataException이 많이 발생하여 해결할 수 없습니다. – Bytecode

1

CursorAdapter가 더 이상 필요하지 않을 때까지 커서를 닫을 수 없습니다. 따라서 onDestroy() 메서드에서 닫을 수 있습니다.

@Override 
public void onDestroy() { 
super.onDestroy(); 

    //Close the cursor 
    cursor.close(); 
    //Close the database 
    database.close(); 
    } 
0

제 경우에는 onStop() 메서드에서 커서를 닫았습니다. 화면의 회전에 따라이 코드가 실행되어 StaleDataException이 발생하는 것으로 나타났습니다.

0

Activity.managedQuery() 대신 Activity.getContentResolver.query()을 사용하십시오. managedQuery()이 (가) 권장되지 않습니다. 그것은 나를 위해 작동합니다.