0
我正在編寫一個程序,它需要活動A將數據寫入數據庫,而活動B則從數據庫讀取數據。我擴展SQLiteOpenHelper類作爲DatabaseHelper,我得到我的活動數據庫這樣:在不同活動之間共享數據庫
SQLiteOpenHelper dbHelper = new DatabaseHelper(this, "classtableDatabase", null, 1);
SQLiteDatabase db = dbHelper.getWritableDatabase();
它工作在活動很好。 當我嘗試打開由活動A的活動B在同樣的方式創建的數據庫,它失敗了,我得到這些錯誤消息:
FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{cn.square2.iscut/cn.square2.iscut.ClassTableDetails}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1891)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)
at android.app.ActivityThread.access$600(ActivityThread.java:127)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4441)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:157)
at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:231)
at cn.square2.iscut.ClassTableDetails.<init>(ClassTableDetails.java:28)
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1319)
at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1882)
... 11 more
我應該怎麼做才能解決這個問題?感謝您的幫助!
確保你'this'指的是應用程序上下文而不是活動上下文。並請張貼您的代碼。 – minhaz
@minhaz:爲什麼應用程序上下文而不是活動上下文?在大多數情況下,活動環境是好的,儘管沒有進一步的代碼,很難說。 – Squonk
您是否在'Activity' A和B中使用相同的代碼打開數據庫?你是否正在關閉數據庫'活動'A當你移動到'活動'乙.. –