【问题标题】:How to open sqlite DB in onrestart()如何在 onrestart() 中打开 sqlite DB
【发布时间】:2012-01-09 09:57:18
【问题描述】:

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

我的代码在这里

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()..

【问题讨论】:

  • 您确定关闭数据库 onStop?
  • 显示您的整个活动代码..

标签: android database sqlite android-listview illegalstateexception


【解决方案1】:

您在打开和关闭之间什么都不做!怎么会。。

【讨论】:

    【解决方案2】:

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

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

    DatabaseManager.getInstance(HomeActvity.this).closeDatabase();

    【讨论】:

    • 不看更多代码,这是我最好的猜测。为什么不发布您的 listAdapter 代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多