2010-07-12 1 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.getContentResolver.query() вместо Activity.managedQuery(). Потому что managedQuery() устарел. Меня устраивает.

 Смежные вопросы

  • Нет связанных вопросов^_^