0

我是android的新手。是否有任何语句可用于检查游标对象和数据库是否关闭。我有两个活动 A 和 B。当我在 A 中执行某些操作时,它将转到 B。A 的数据库对象和光标对象在活动 A 中关闭。当我在 B 中按下后退按钮时,活动强制关闭。我知道这个错误是由于我的游标对象关闭造成的。有没有办法重新打开游标和数据库对象,或者我们可以检查两者是否都关闭。如果是这样,请帮助我。

我的 logcat 视图如下所示:

10-25 16:02:15.152: ERROR/AndroidRuntime(458): Caused by:java.lang.IllegalStateException: attempt to re-open an already-closed object: android.database.sqlite.SQLiteQuery (mSql = SELECT * FROM tbl_sec) 
10-25 16:02:15.152: ERROR/AndroidRuntime(458):     at android.database.sqlite.SQLiteClosable.acquireReference(SQLiteClosable.java:34)
10-25 16:02:15.152: ERROR/AndroidRuntime(458):     at android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java:64)
10-25 16:02:15.152: ERROR/AndroidRuntime(458):     at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:283)
10-25 16:02:15.152: ERROR/AndroidRuntime(458):     at android.database.sqlite.SQLiteCursor.onMove(SQLiteCursor.java:255)
10-25 16:02:15.152: ERROR/AndroidRuntime(458):     at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:188)
10-25 16:02:15.152: ERROR/AndroidRuntime(458):     at android.database.AbstractCursor.moveToFirst(AbstractCursor.java:248)
10-25 16:02:15.152: ERROR/AndroidRuntime(458):     at com.nagainfo.firstAp.showTime.onResume(showTime.java:84)
10-25 16:02:15.152: ERROR/AndroidRuntime(458):     at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1149)
10-25 16:02:15.152: ERROR/AndroidRuntime(458):     at android.app.Activity.performResume(Activity.java:3823)
10-25 16:02:15.152: ERROR/AndroidRuntime(458):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3118)
4

2 回答 2

1

Cursor尝试在 Activity A 中打开您的onResume()onStart()而不是onCreate().

于 2012-10-25T11:06:52.187 回答
0

要关闭数据库实例,请在退出活动之前执行以下操作:

if(db.isOpen()){
    db.close();
}

要检查 Cursor 是否可用,请执行以下操作:

if (cursor1.isClosed())
    //Do something here
于 2012-10-25T11:06:56.177 回答