2014-12-19 76 views
-1

我有一个附加到活动的对话框片段。事情看起来很清楚,直到出现这个奇怪的错误。Dialog Builder,setmultichoiceItems返回空指针异常

对话框构建器完美地工作,当我初始化数组 “球” 等

字符串[]哟= { “一”, “B”, “C”, “d”, “e” 的};

但是,在其他类中使用静态字符串2-D数组初始化阵列时,logcat会显示下面附加的错误。我已经手动检查(通过打印到logcat中)如果字符串yo已经被初始化并且实际上已经。有人可以帮我吗?````

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

刚刚找出解决方案。看起来数组“哟”在后面的索引中有一些空值。这是引发空指针异常的原因。所以我所做的就是

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

和对话建设者完美的作品:d