2014-12-19 2 views
-1

활동에 첨부 된 대화 상자 조각이 있습니다. 이 이상한 오류가 나타날 때까지는 상황이 아주 분명해 보입니다.대화 상자 빌더, null 포인터 예외를 반환하는 setmultichoiceItems

대화 작성기 I 어레이를 초기화하는 경우 완벽하게 작동 "요"

문자열 [] 요 = { "A", "B", "C", "D", "E"};

그러나 다른 클래스의 정적 문자열 2 차원 배열로 배열을 초기화 할 때 logcat은 아래에 첨부 된 오류를 표시합니다. 문자열 yo가 초기화되었고 참으로 가지고 있다면 수동으로 (logcat으로 인쇄하여) 점검했습니다. 누군가가 나를 도울 수 있습니까? "

String[] yo=appstartreceiver.today[2]; 
    Log.d("Update update",String.valueOf(yo.length)); 
    boolean[] happened=new boolean[5]; 
    boolean[] missed=new boolean[5]; 

    AlertDialog.Builder build=new AlertDialog.Builder(getActivity()); 
    build.setTitle("Select classes that happened and classes that were missed"); 

    build.setMultiChoiceItems(yo,happened,new DialogInterface.OnMultiChoiceClickListener() { 
     @Override 
     public void onClick(DialogInterface dialogInterface, int i, boolean b) { 
      Log.d("yo","Sahi ho"); 




10-27 17:57:09.249 4869-4869/com.example.shakar.klassjum E/AndroidRuntime﹕ FATAL EXCEPTION: main 
Process: com.example.shakar.klassjum, PID: 4869 
java.lang.NullPointerException 
     at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:394) 
     at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362) 
     at com.android.internal.app.AlertController$AlertParams$1.getView(AlertController.java:879) 
     at android.widget.AbsListView.obtainView(AbsListView.java:2240) 
     at android.widget.ListView.measureHeightOfChildren(ListView.java:1263) 
     at android.widget.ListView.onMeasure(ListView.java:1175) 
     at android.view.View.measure(View.java:16497) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 
     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404) 
     at android.widget.LinearLayout.measureVertical(LinearLayout.java:695) 
     at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) 
     at android.view.View.measure(View.java:16497) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 
     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404) 
     at android.widget.LinearLayout.measureVertical(LinearLayout.java:695) 
     at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) 
     at android.view.View.measure(View.java:16497) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 
     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
     at android.view.View.measure(View.java:16497) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 
     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
     at android.view.View.measure(View.java:16497) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 
     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
     at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2291) 
     at android.view.View.measure(View.java:16497) 
     at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1916) 
     at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1088) 
     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1295) 
     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000) 
     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5670) 
     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761) 
     at android.view.Choreographer.doCallbacks(Choreographer.java:574) 
     at android.view.Choreographer.doFrame(Choreographer.java:544) 
     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747) 
     at android.os.Handler.handleCallback(Handler.java:733) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5017) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
     at dalvik.system.NativeStart.main(Native Method) 

     } 
    }); 

답변

0

방금 ​​해결책을 찾아 냈습니다. 그것은 "yo"배열에 후자의 인덱스에서 일부 null 값이있는 것 같습니다. 그것이 널 포인터 예외가 던져진 이유입니다. 그래서 내가 한 것은

List<String> list = new ArrayList<String>(Arrays.asList(y)); 
    list.removeAll(Collections.singleton(null)); 
    String[]yo=list.toArray(new String[list.size()]); 

이었다 그리고 대화 빌더는 완벽하게 작동합니다 : D

관련 문제