2015-09-07 2 views
0

Я получаю «java.lang.ArrayIndexOutOfBoundsException: length = 0; index = 0» при выполнении фоновых задач. Пожалуйста помоги.arraybounds исключение & значения конструктора не видны doInBackground в AsyncTask

ArrayList<String> ilist ,rlist,glist,yearlist; 
public static final String FetchURL = "http://fxxxx.fxxx.com/fetchdesc.php"; 

new fetchDescInBack(ilist,rlist,glist,yearlist).execute(); 


private class fetchDescInBack extends AsyncTask<ArrayList,String,String> 
{ 
    private final ArrayList<String> ilist,rlist,glist,yearlist; 
    URL url; 

    Context context; 


    public fetchDescInBack(ArrayList<String> ilist, ArrayList<String> rlist, ArrayList<String> glist, ArrayList<String> yearlist) { 
     this.ilist = ilist; 
     this.rlist = rlist; 
     this.glist = glist; 
     this.yearlist = yearlist; 
     this.context=context; 
     Log.e("Shiva", "" + ilist); 
    } 


    @Override 
    protected String doInBackground(ArrayList... params) { 
     ArrayList ilist = params[0]; 
     ArrayList rlist = params[1]; 
     ArrayList glist = params[2]; 
     ArrayList yearlist = params[3]; 
     try { 
      url = new URL(FetchURL); 
      HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 

      InputStream inputStream = connection.getInputStream(); 
      InputStreamReader inputStreamReader = new InputStreamReader(inputStream); 
      BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 

      StringBuilder stringBuilder = new StringBuilder(); 
      String tempstring; 

      while ((tempstring = bufferedReader.readLine()) != null) { 
       stringBuilder.append(tempstring); 
       stringBuilder.append("\n"); 
      } 

     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 


     return null; 
    } 

Я передаю 4 списка значений из другого вида деятельности в этот класс под Asynctask. Поэтому я использовал конструктор и передал значения Asynctask. Но есть исключения и значения, назначенные в конструкторе, не могут извлекать внутреннюю задачу doInBackground. Пожалуйста помоги.

ответ

0

Исключение является правильным. ArrayList... params, прежний параметр doInBackground, относится к аргументам, которые вы передаете execute() нет конструктору.

new fetchDescInBack(ilist,rlist,glist,yearlist).execute(ilist,rlist,glist,yearlist); 

следует исправить. Чтобы избежать путаницы, вы должны выбрать или использовать constructor для передачи значений или с помощью params

+0

После указанных изменений исключений нет. Как вы сказали, я уже использую конструктор. Проверьте мой код. – user29051986

+0

Что вы подразумеваете под * Пожалуйста, проверьте мой код *? – Blackbelt

+0

В вопросе, который выше, я добавил код, который использовал конструктор. Итак, я спросил, что вы сказали выше? – user29051986

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