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