2

입니다 : 09-13 18 : 12 : 33.119 : E안드로이드 : 나는 데이터베이스에 액세스하려고 할 경우 getWritableDatabase (에 NullPointerException이) 여기

01 23,516,
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) 

기타 자세한 사항 :

  • 대상 : HTC
+0

어디에서 UserDataAdapter를 인스턴스화합니까? 이 클래스를 인스턴스화하는 클래스의 코드를 포함 할 수 있습니까? @ Adil은 귀하의 컨텍스트가 어떻게 든 null이라는 것이 맞습니다. 이유를 이해해야합니다. – momo

답변

4

이 당신의 Context가 제대로 확인 설정되는 한 경우 욕망 여부 :

  • 시험 장치 안드로이드-7.

  • +0

    동일한 코드가 있습니다. 컨텍스트가 올바르게 설정되어 있습니다 (open()을 호출하기 직전에 확인 됨) 컨텍스트는 Activity를 확장하는 FetchNetworks입니다. –

    1

    참고 : 표준 ContentProvider 구현시 NullPointerException 오류가 발생했습니다. 나는 마침내 그것을 해결했고 키는 매니페스트 파일의 문맥/의도와 관련이 있습니다.

    결국 내 매니 페스트의 활동 내에서이 라인이 누락되었습니다.

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

    내가 말하는 것에 대해 메모 패드 샘플을 체크 아웃하십시오. 또한 나는 구조를 여기에 사용하는 것을 선호한다 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()를 열어보십시오.

    관련 문제