2

は次のとおりです。アンドロイド:私は、データベースにアクセスしようとするのはここgetWritableDatabase上のNullPointerException()

UserDataAdapter dbHelper = new UserDataAdapter(this); 
dbHelper.open(); 
dbHelper.createNetwork(network); 
dbHelper.close(); 

UserDataAdapter.java:

public UserDataAdapter open() throws SQLException { 
     dbHelper = new DatabaseHelper(context); // of class DatabaseHelper 
     database = dbHelper.getWritableDatabase(); // this line!! 
     return this; 
    } 

DatabaseHelper.java:

public DatabaseHelper(Context context) { 
     super(context, Defines.DATABASE_NAME, null, Defines.DATABASE_VERSION); 
    } 

@Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL(Defines.DATABASE_CREATE_TAXI_SERVICE_DATABASE); 
    } 

クラッシュ: 09-13 18:12:33.119:E

RROR/AndroidRuntime(7488): FATAL EXCEPTION: main 
09-13 18:12:33.119: ERROR/AndroidRuntime(7488): java.lang.NullPointerException 
09-13 18:12:33.119: ERROR/AndroidRuntime(7488):  at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203) 
09-13 18:12:33.119: ERROR/AndroidRuntime(7488):  at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98) 
09-13 18:12:33.119: ERROR/AndroidRuntime(7488):  at com.basind.testapp.database.UserDataAdapter.open(UserDataAdapter.java:29) 
09-13 18:12:33.119: ERROR/AndroidRuntime(7488):  at com.basind.testapp.FetchNetworks.addToDatabase(FetchNetworks.java:107) 
09-13 18:12:33.119: ERROR/AndroidRuntime(7488):  at com.basind.testapp.FetchNetworks.access$1(FetchNetworks.java:105) 
09-13 18:12:33.119: ERROR/AndroidRuntime(7488):  at com.basind.testapp.FetchNetworks$1.onResponseReceived(FetchNetworks.java:75) 
09-13 18:12:33.119: ERROR/AndroidRuntime(7488):  at com.basind.testapp.async.CallbackWrapper.run(CallbackWrapper.java:15) 
09-13 18:12:33.119: ERROR/AndroidRuntime(7488):  at android.os.Handler.handleCallback(Handler.java:587) 
09-13 18:12:33.119: ERROR/AndroidRuntime(7488):  at android.os.Handler.dispatchMessage(Handler.java:92) 
09-13 18:12:33.119: ERROR/AndroidRuntime(7488):  at android.os.Looper.loop(Looper.java:145) 
09-13 18:12:33.119: ERROR/AndroidRuntime(7488):  at android.app.ActivityThread.main(ActivityThread.java:4937) 
09-13 18:12:33.119: ERROR/AndroidRuntime(7488):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-13 18:12:33.119: ERROR/AndroidRuntime(7488):  at java.lang.reflect.Method.invoke(Method.java:521) 
09-13 18:12:33.119: ERROR/AndroidRuntime(7488):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
09-13 18:12:33.119: ERROR/AndroidRuntime(7488):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
09-13 18:12:33.119: ERROR/AndroidRuntime(7488):  at dalvik.system.NativeStart.main(Native Method) 

その他の詳細:

  • 対象:アンドロイド-7
  • テストデバイス:HTC欲望
+0

ここで、UserDataAdapterをインスタンス化しますか?このクラスをインスタンス化するクラスのコードを含めることはできますか? @ AdilはあなたのContextが何と​​かnullであることが正しいと思われます。理由を理解するだけです。 – momo

答えて

4

あなたContextが正しく設定されていないか、されているかどうかを確認してください。

+0

私は同じコードを持っています...コンテキストは正しく設定されています(open()を呼び出す前にチェックされています)。コンテキストはFetchNetworksで、Activityを拡張します。 –

1

FYI:標準のContentProvider実装でNullPointerExceptionエラーが発生しました。私は最終的にそれを解決し、キーはマニフェストファイルのコンテキスト/インテントに関連しています。

最後に、私のマニフェストの活動の内側からこの行が欠落していました。

<data android:mimeType="vnd.android.cursor.dir/vnd.pmp.smsmessage" /> 

私が話していることについては、NotePadサンプルをチェックアウトしてください。また、私はここで構造を使用することを好むhttp://www.vogella.com/articles/AndroidSQLite/article.htmlしかし、彼のツタンカーメンは、3.0のために設計されているため、2.2の実装のためのすべてのローダーのものを残していた...

私のデータベースに入れた後、私はこれを単純にonCreateを使ってテストしました。

ContentValues values = new ContentValues(); 
values.put("somefieldname","somevalue"); 
values.put("otherfieldname","othervalue"); 
getContentResolver().insert(MyProvider.CONTENT_URI, values); 
0

これは、サービスまたはアクティビティのコンストラクタからデータベースを開こうとすると発生します。 onCreate()を開いてみてください。

関連する問題