これは数日間私を夢中にしています。私はかなり複雑なアンドロイドアプリケーションを持っています。これは、複数のスレッドを使用してサーバーからデータを取得し、SQLiteデータベースにデータを取り込みます。私はSQLiteOpenHelperの私の拡張を参照するためにシングルトンを使用しています。私はそれぞれの活動でデータベースを開いたり閉じたりしています。Android SQLite SQLiteOpenHelper IllegalStateException - DBが既に閉じているエラー
エラーは、私が4アクティビティの深いところでエラーが発生した場合にのみ、エラーが発生します。私はonDestroy()メソッドからonPause()メソッドにcloseを移動し、onResume()に別のオープンを追加するなど、データベースのオープンとクローズのさまざまな方法を試しました。 http://darutk-oboegaki.blogspot.com/2011/03/sqlitedatabase-is-closed-automatically.html
私は、コードを経て、私は確信して作りました。また、ノートの
、私の活動はデータベースを引き起こす可能性があり、私は理解してリストビューとExpandableListViews、を多用するこの記事をもとに閉じるには、すべてのカーソルを閉じるか、アダプタに割り当てられている場合はstartManagingCursor()を呼び出します。
何が起こっているかについて誰かが手掛かりを持っていますか?
java.lang.RuntimeException: Unable to resume activity {com.fieldone/com.fieldone.DispatchActivity}: java.lang.IllegalStateException: database /data/data/com.fieldone/databases/InterstateAirConditioning-1602814322.db already closed
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3347)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3362)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2162)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:144)
at android.app.ActivityThread.main(ActivityThread.java:4937)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: database /data/data/com.fieldone/databases/InterstateAirConditioning-1602814322.db already closed
at android.database.sqlite.SQLiteProgram.bindString(SQLiteProgram.java:237)
at android.database.sqlite.SQLiteQuery.requery(SQLiteQuery.java:145)
at android.database.sqlite.SQLiteCursor.requery(SQLiteCursor.java:567)
at android.app.Activity.performRestart(Activity.java:3836)
at android.app.Activity.performResume(Activity.java:3857)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3337)
... 10 more
UPDATE:私は問題を修正しましたが、これはそれを修正する理由がわからないてきました。だから、多分誰かが知っているか説明することができます。
私が4回目のアクティビティを行っているとき、db.close()でdbをクローズしようとしていました。私が必要とするデータを取得した後、またはonStopまたはonDestroyで、このエラーを生成するonCreateのどこに置いても問題ありません。私がデータベースを閉じないと、私は問題を抱えていません。だから、何かが自動的にデータベースを閉じている原因です。私はこの最終アクティビティでexpandableListViewを使用していますが、私はcursorAdapterを使用していません。誰でも考えがありますか?これを理解するのが大好きです。