2014-12-19 2 views
-1

У меня есть фрагмент диалога, который привязан к действию. Все выглядит довольно ясно, пока не появится эта странная ошибка.Dialog Builder, setmultichoiceItems, возвращающий исключение нулевого указателя

диалоговое строитель прекрасно работает, когда я инициализировать массив "йо", как

String [] лет = { "а", "б", "в", "г", "е"};

Однако при инициализации массива со статическим строковым 2-мерным массивом в другом классе 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

Только что разобрался в решении. Кажется, у массива «yo» были некоторые нулевые значения в последних индексах. Именно по этой причине выбрасывалось исключение нулевого указателя. Так что я сделал

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

И диалог строитель работает отлично: D

Смежные вопросы