5

誰かが私にこれを説明できますか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)

いつ、どのようにカーソルの要求を保証する必要があり、なぜこの例外で失敗するのですか?

4

4 に答える 4

4

Cursorすでに閉じられているから情報を取得しようとしています。メソッドを使用して、カーソルが閉じているかどうかを確認する必要がありますisClosed

于 2010-07-12T20:31:08.743 に答える
1

CursorAdapterが不要になるまで、カーソルを閉じることはできません。したがって、onDestroy()メソッドで閉じることができます。

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

     //Close the cursor
     cursor.close();
     //Close the database
     database.close();
    }
于 2014-08-25T09:06:58.483 に答える
0

私の場合、onStop()メソッドでカーソルを閉じていました。画面の回転によってこのコードが実行され、StaleDataExceptionが発生することが判明しました。

于 2016-05-04T15:57:55.980 に答える
0

Activity.getContentResolver.query()の代わりに使用してくださいActivity.managedQuery()managedQuery()非推奨になっているためです。わたしにはできる。

于 2017-03-24T09:25:16.640 に答える