如何在onrestart()中打开sqlite DB

时间:2011-11-30 04:49:49

标签: android database sqlite android-listview illegalstateexception

我正在使用从DB检索的数据更新主列表视图。当我出去然后回到家里它崩溃

我的代码在这里

protected void onRestart() {
    super.onRestart();
    Log.i(TAG, "onRestart called");
    DatabaseManager.getInstance(HomeActvity.this).open();
    listAdapter.notifyDataSetChanged();
    DatabaseManager.getInstance(HomeActvity.this).closeDatabase();
}

我的日志是:

11-28 19:07:22.606: E/AndroidRuntime(24303): java.lang.IllegalStateException: database not open
11-28 19:07:22.606: E/AndroidRuntime(24303):    at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1224)
11-28 19:07:22.606: E/AndroidRuntime(24303):    at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1184)
11-28 19:07:22.606: E/AndroidRuntime(24303):    at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1264)

我试过runOnUIThread()..

2 个答案:

答案 0 :(得分:0)

为什么在notifydatachanged之后立即关闭数据库?我认为关闭后数据库读数正在发生。尝试删除该行,看看它是否正常工作。

DatabaseManager.getInstance(HomeActvity.this).open();
listAdapter.notifyDataSetChanged();

<击> DatabaseManager.getInstance(HomeActvity.this).closeDatabase();

答案 1 :(得分:0)

你在开放和关闭之间什么都不做!怎么来..