如何在onrestart()中打开sqlite DB

发布于 2024-12-18 17:07:30 字数 887 浏览 3 评论 0原文

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

我的代码在这里

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

I am updating home listview using data retrieved from DB. When I go forth then comeback to Home it crashes

My code is here

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

My Log is:

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)

I tried runOnUIThread()..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不忘初心 2024-12-25 17:07:30

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

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

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

Why do you close your database right after notifydatachanged? I think database reading is happening after close. Try to remove the line and see if it's working.

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

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

原野 2024-12-25 17:07:30

在打开和关闭之间你什么也没做!怎么会..

You are doing nothing in between open and close! how come..

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文