1

我的应用程序有一个问题,如果我返回一个活动,我会收到一个错误,表明数据库已关闭:

ERROR/AndroidRuntime(3566): Caused by: java.lang.IllegalStateException: database /data/data/com.kempville.app/databases/MyDB already closed

我在 onResume() 期间调用的方法中实例化、打开、实例化游标、执行查询、关闭游标和关闭数据库。我不知道当这个活动回到前面时,每当调用 onResume 时假定什么是打开的。

private void getMydata() {
    MyDb db;
    db = new MyDB(this);
db.open();
Cursor c = db.getInfo(code);
startManagingCursor(c);
if (c.moveToFirst()) {
        name = c.getString(c.getColumnIndex("name"));
}
c = fdb.getType(myArray.getString("type"));
startManagingCursor(c);
if (c.moveToFirst()) {
    type = c.getString(c.getColumnIndex("type"));
}
c.close();
db.close();
4

1 回答 1

1

似乎 startManagingCursor 会尝试关闭它,尽管您已经自己关闭了它。要么放弃 startManagingCursor(它已被弃用),要么更好地调用 stopManagingCursor

于 2011-05-26T17:55:13.653 回答