0

アクティビティ A がデータベースにデータを書き込み、アクティビティ B がデータベースからデータを読み取る必要があるプログラムを作成しています。SQLiteOpenHelper クラスを DatabaseHelper として拡張し、次のようにしてアクティビティ A でデータベースを取得します。

SQLiteOpenHelper dbHelper = new DatabaseHelper(this, "classtableDatabase", null, 1);
SQLiteDatabase db = dbHelper.getWritableDatabase();

アクティビティでうまく機能します。アクティビティ B でアクティビティ A によって作成されたデータベースを開こうとすると、失敗し、次のエラー メッセージが表示されます。

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

この問題を解決するにはどうすればよいですか? ご協力ありがとうございました!

4

1 に答える 1

0

私も同じ問題を抱えていました。アクティビティ以外のアクティビティからデータベースへの静的参照を作成するだけで、何もする必要はありませんMAIN

于 2013-10-24T05:24:58.873 に答える