2017-03-13 3 views
-3

편집을 던지고있다 : 제안 this 일반 링크의 중복해야하는 이유가 표시되지 않습니다. 나는 수십 개의 NPE를 풀고 몇 가지 이론을 읽었다. 그렇기 때문에 내가 언급 한 것과 유사한 Stacktrace 케이스가있다. 다른 게시물 스피너를 참조하지 탐색 - Drawer.Furthermore에 스택 트레이스 내 코드의 라인을 참조하지 않고, 내가 초기화 문자열 배열의 길이와 일치합니다. 이러한 이유로 나에게 디버그하기가 어렵다. 나는 2 일간을 보냈다. 제 질문은 올바른 형식으로되어 있으며 다른 SO 논문을 언급하면서 연구를 보여줍니다. 어떤 도움을 주셔서 감사합니다. 작동 현재 :NPE 탐색 서랍 목록보기는 널 포인터 예외를

편집 2 :

EDIT (3)을 물었다로 추가 완전한 스택 트레이스! ArrayAdapter와는 세 번째 매개 변수로 내가 문자열 [] 그 문자열에서 상속하지 않는 배열입니다 제공하는 대신 목록 개체를 기다리고 있었다. 나는 ListView 기본에 문자열 목록 1에로드 네비게이션 서랍을 찾고, 그 사용자는 더 많은 목록을 추가 할 수 있습니다. 는 불행하게도, 난 내 코드의 어떤 라인이 표시되지 않습니다이 오류를 가지고있다. 스택 트레이스 유일한 응답 vaguely similar 검사 나는 오류가 여기 있어야 결론없이 선을 그어야

문자열 [] provaListaDrawer 그러나 나는 확실하지 않다.

String[] projection = {" DISTINCT " + UcanContract.Tasks.COLUMN_LIST}; 
    Cursor cursor=getContentResolver().query(UcanContentProvider.CONTENT_URI,projection,null,null,null); 
    String cursorData = DatabaseUtils.dumpCursorToString(cursor); 

    ArrayList<String> arrayList = new ArrayList<>(); 

    while(cursor.moveToNext()) { 


     String list = cursor.getString(cursor.getColumnIndexOrThrow(UcanContract.Tasks.COLUMN_LIST)); 

     arrayList.add(list); 


    } 
    cursor.close(); 




    String[] temp={"List1"}; 

    String[] provaListaDrawer = arrayList.toArray(temp); 

    mDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_view, provaListaDrawer)); 

} 

E/AndroidRuntime : 치명적인 예외 : 주요 프로세스 : PID를 ivano.android.com.ucan : 8856 java.lang.NullPointerException이 : 가상 메서드 'java.lang의 호출을 시도합니다. android.widget.ArrayAdapter.getView (ArrayAdapter.java:371) 에서 android.widget.ArrayAdapter.createViewFromResource (ArrayAdapter.java:409) 에서 널 객체 참조 에서의 문자열 java.lang.Object.toString() android.widget.AbsListView.obtainView (AbsList View.java:2363) android.widget.ListView.fillFromTop (의 ListView에서 android.widget.ListView.fillDown (ListView.java:704) 에서 android.widget.ListView.makeAndAddView (ListView.java:1970) 에서 . java : 765) android.widget.List.layoutChildren (ListView.java:1744)에서 에서 android.widget.AbsListView.onLayout (AbsListView.java:2162) android.view.View.layout (View.java : android.view.View.layout (보기에서 android.support.v4.widget.DrawerLayout.onLayout (DrawerLayout.java:931) 에서 android.view.ViewGroup.layout (ViewGroup.java:5575) 에서 17637) . java : 17637)android.widget.FrameLayout.onLayout에서 android.widget.FrameLayout.layoutChildren (FrameLayout.java:323) 에서 android.view.ViewGroup.layout (ViewGroup.java:5575) (FrameLayout.java:261) 에서에서 android.view.View.layout (View.java:17637) android.view.ViewGroup.layout (ViewGroup.java:5575) at com.android.internal.widget.ActionBarOverlayLayout.onLayout (ActionBarOverlayLayout.java:493) android.widget에서 android.view.ViewGroup.layout (ViewGroup.java:5575) 에서 android.view.View.layout (View.java:17637) 에서 .FrameLayout.layoutChildren (FrameLayout.java:323) at android.widget.FrameLayout.onLayout (FrameLayout.java:261) at com.android.internal.policy.DecorView.onLayout (DecorView.java:726) at android. view.View.layout (View.java:17637) android.view.ViewGroup.layout (ViewGroup.java:5575) at android.view.ViewRootImpl.performLayout (ViewRootImpl.java:2346) android.view에서 볼 수 있습니다. ViewRootImpl.performTraversals android.view.ViewRootImpl $ TraversalRunnable.run (ViewRootImpl.java:6337)에서 (ViewRootImpl.java:2068) android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1254)에서 android.view.Choreographer $ CallbackRecord.run (Choreographer.java:874) android.view.Choreographer.doCallbacks (Choreographer.java:686)의 android.view.Choreographer.doFrame (Choreographer.java:621) android.view.Choreographer에서 $ FrameDisplayEventReceiver.run (Choreographer.java:860) android.os.Handler.handleCallback (Handler.java:751) android.os.Handler.dispatchMessage (Handler.java:95) 에 있습니다. android.os.Looper.loop (Looper.java:154) android.app.ActivityThread.main (ActivityThread.java:6119) at java.lang.reflect.Method.invoke (기본 메소드)com.android.internal.os.ZygoteInit.main에서 com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:886) 에서3210 (ZygoteInit.java:776) 그것을 지금

+2

가능한 [NullPointerException이란 무엇이며 어떻게 수정합니까?] (http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix -it) – Jens

+0

은 EDIT를 참조하십시오. NPE가 항상 사소한 것은 아니지만, 해결을 위해 이틀을 보냈습니다. – trocchietto

+2

logcat이 완료 되었습니까? –

답변

0

works ArrayAdapter는 List 객체의 세 번째 매개 변수로서 기다리고 있었는데 대신 String에서 상속받지 않는 Array []를 제공했습니다. Mike M.이 제안한대로 provaListaDrawer은 null이지만, 주된 점은 을 ArrayAdapter에 전달할 수 없다는 것입니다. List<T> object을 전달해야하며 ArrayListList에서 상속 받기 때문에 완벽하다고 제안되었습니다.

String[] temp={"List1"}; 

String[] provaListaDrawer = arrayList.toArray(temp); 

mDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_view, provaListaDrawer)); 

내가 써야했다 :

ArrayList<String> provaListaDrawer = new ArrayList<>(); 
    provaListaDrawer.add("List1"); 

    mDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_view, provaListaDrawer)); 

을 그리고 NPE는 런타임시 컴파일이 유효한 매개 변수를 찾는 android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:409)을 실행할 때 피할 수

는 기본적으로 대신 쓰기!

관련 문제