2015-05-21 2 views
1

Я пытаюсь показать AlertDialog с некоторыми номерами, которые я получаю с сервера. Отображение работ. И это также переходит к следующему действию. Он работает на моем устройстве Android, но на некоторых это дает исключение, и телефонные сбои.Alertdialog ArrayIndexOutOfBoundsException error

Я всегда получаю это исключение в LogCat:

D/Исключение: java.lang.ArrayIndexOutOfBoundsException: длина = 0; Индекс = -1

Это мой код:

private void showOrderPopup(){ 
    try{ 
     materialLoaderOdoo = new MaterialLoaderOdoo(); 
     dbOrderModel = new DbOrderModel(context); 
     Integer partnerId = dbOrderModel.getPartnerIdByReference(Name); 

     final List<Integer> listResults = new ArrayList<Integer>(); 
     List<Integer> result = dbOrderModel.getOrderById(Integer.parseInt(partnerId.toString()));; 
     if(result.size() > 1){ 
      int t = result.size(); 
      newArray = new String[result.size()]; 
      //newArray[0] = "565"; 
      //newArray[1] = "565"; 

      for(int d=0;d<result.size();d++){ 
       listResults.add(d,result.get(d)); 
      } 


      for(int d=0;d<result.size();d++){ 

       String r = result.get(d).toString(); 
       newArray[d] = result.get(d).toString(); 
       System.out.println(newArray[d]); 

      } 



      AlertDialog.Builder builder = 
        new AlertDialog.Builder(YardActivity.this); 
      builder.setTitle("Select One Letter"); 
      int selected = selectedItem; 
      builder.setSingleChoiceItems(
        newArray, 
        selected, 
        new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog,int which) { 
          selectedItem=which; 
          System.out.println(which); 
          String nam = listResults.get(which).toString(); 
          materialLoaderOdoo.execute(nam); 
          //System.out.println(newArray[selectedItem].toString()); 
          Toast.makeText(YardActivity.this,"Loading materials...",Toast.LENGTH_LONG).show(); 
          dialog.dismiss(); 
         } 
        }); 
      AlertDialog alert = builder.create(); 
      alert.show(); 
     }else{ 
      Toast.makeText(YardActivity.this,"Loading materials...",Toast.LENGTH_LONG).show(); 
      OrderId = listResults.get(0); 
      String w = listResults.get(0).toString(); 
      materialLoaderOdoo.execute(w); 
     } 
    } catch (Exception e) { 
     AlertHandler alertHandler = new AlertHandler(YardActivity.this); 
     alertHandler.ShowAlert(YardActivity.this,"Error","Something went wrong!"); 
     Log.d("Exception", e.toString()); 

    } 
} 

Каждый знает, как исправить это исключение? Я пробовал много вещей, но он все еще отображается в моем logcat.

ответ

0

Этот тип исключения всегда приходит, когда размер списка равен 0, и мы пытаемся получить доступ к списку ... Таким образом, вы должны проверить, какой список вы используете имеют данные или нет.

0

Печать трассировки стека. Помогите вам проверить, в какой именно строке. Чтобы распечатать трассировку стека в журналах, используйте Log.d(TAG, MESSAGE, new Exception());