问题描述
|
我的应用程序有一个问题,如果我返回到某个活动,会收到一个错误消息,指出数据库已关闭:
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();
解决方法
似乎startManagingCursor会尝试关闭它,尽管您已经自己关闭了它。要么放弃startManagingCursor(不推荐使用),要么更好地调用stopManagingCursor