Bu bir kaç gün için beni deli ediyor. Oldukça karmaşık bir android uygulaması var. Bir sunucudan veri almak ve SQLite veritabanını doldurmak için birden çok iş parçacığı kullanır. SQLiteOpenHelper uzantımıma başvurmak için bir singleton kullanıyorum. Faaliyetlerimin her birinde veritabanını açıp kapatıyorum.Android SQLite SQLiteOpenHelper IllegalStateException - DB Zaten Kapalı Hata
YALNIZCA, 4 etkinlik derinliğindeyken ve sonra da çıkmaya çalıştığımda oluşan bir hata oluşur. OnDestroy() yöntemini onPause() yöntemlerine taşıyarak ve onResume() öğesine yeni bir tane daha ekleyerek dahil olmak üzere veritabanını açıp kapatmanın çeşitli yollarını denedim. http://darutk-oboegaki.blogspot.com/2011/03/sqlitedatabase-is-closed-automatically.html
kod geçirdi ve ben eminim yaptık: Ayrıca şunu da unutmayın
, benim faaliyetleri veritabanı neden olabilir anlıyorum listviews ve ExpandableListViews, çokça kullanan bu maddeye dayanılarak bu yakın etmek ya da tüm imleçlerimi kapatabilirler ya da bir bağdaştırıcıya atanıyorlarsa, startManagingCursor() öğesini çağırıyorlar.
Neler olup bittiğine dair bir ipucu var mı?
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
GÜNCELLEME: Sorunu sabit, ama bu onu sabit NEDEN emin oldum. Yani, belki de birileri açıklayabilir ya da açıklayabilir.
Etkinlik yığınının 4. etkinliğindeyken, db'yi db.close() aracılığıyla kapatmaya çalışıyordum. Bunu nereye koyduğum önemli değil, ihtiyacım olan verileri aldıktan sonra onCreate uygulamasında veya onStop veya onestest'te bu hatayı üretecektir. Eğer db'yi kapatmazsam, sorun bende değil. Yani, bir şey db'nin otomatik olarak kapanmasına neden oluyor. Garip bir şey, bu son etkinlikte bir genişletilebilirListView kullanıyorum, ancak bir cursorAdapter kullanmıyorum. Herhangi bir fikri olan var mı? Bunu anlamak isterim.