在我的主活动(A)中,我打开一个调用特定类的数据库(SQLite),并存储" db-pointer"变量。它可以工作:我可以从/向数据库加载/保存数据。
对于某些工作,我必须开始另一个活动(B)。这个打开数据库来对数据库进行一些操作(特别是在其中创建一个新记录)。
当我关闭(B)时,Android重新启动并恢复主要活动。我检查" db-pointer",它不是空的。
在主要活动中有一个微调按钮。如果我按下它,并选择一个不同的值," db-pointer"变得空了。 " onItemSelected()"必须调用数据库才能查找数据。 为什么" db-pointer"变为空?
CODE打开数据库并创建" db-pointer":
dbHelper = new DbAdapter(this);
dbHelper.open();
错误的LogCat:
02-22 23:11:25.560: E/AndroidRuntime(15442): FATAL EXCEPTION: main
02-22 23:11:25.560: E/AndroidRuntime(15442): Process: com.example.Traffic, PID: 1544202-22 23:11:25.560: E/AndroidRuntime(15442): java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase: /data/data/com.example.Traffic/databases/dbtrip
02-22 23:11:25.560: E/AndroidRuntime(15442): at android.database.sqlite.SQLiteClosable.acquireReference(SQLiteClosable.java:55)
02-22 23:11:25.560: E/AndroidRuntime(15442): at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1156)
02-22 23:11:25.560: E/AndroidRuntime(15442): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1032)
02-22 23:11:25.560: E/AndroidRuntime(15442): at com.database.trip.DbAdapter.fetchVehiclesByCod(DbAdapter.java:240)
02-22 23:11:25.560: E/AndroidRuntime(15442): at com.example.Traffic.Mappa.vehicleParameters(Mappa.java:937)
02-22 23:11:25.560: E/AndroidRuntime(15442): at com.example.Traffic.Mappa.access$1(Mappa.java:936)
02-22 23:11:25.560: E/AndroidRuntime(15442): at com.example.Traffic.Mappa$1.onItemSelected(Mappa.java:717)
02-22 23:11:25.560: E/AndroidRuntime(15442): at android.widget.AdapterView.fireOnSelected(AdapterView.java:896)
02-22 23:11:25.560: E/AndroidRuntime(15442): at android.widget.AdapterView.access$200(AdapterView.java:51)
02-22 23:11:25.560: E/AndroidRuntime(15442): at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:864)
02-22 23:11:25.560: E/AndroidRuntime(15442): at android.os.Handler.handleCallback(Handler.java:733)
02-22 23:11:25.560: E/AndroidRuntime(15442): at android.os.Handler.dispatchMessage(Handler.java:95)
02-22 23:11:25.560: E/AndroidRuntime(15442): at android.os.Looper.loop(Looper.java:136)
02-22 23:11:25.560: E/AndroidRuntime(15442): at android.app.ActivityThread.main(ActivityThread.java:5336)
02-22 23:11:25.560: E/AndroidRuntime(15442): at java.lang.reflect.Method.invokeNative(Native Method)
答案 0 :(得分:0)
问题是这个异常,它无法重新打开数据库。当您关闭DBHelper并重复使用它时会发生这种情况。