Вот код внутри AsyncTaskArrayIndexOutOfBoundsException в onProgressUpdate из AsyncTask в Android
doInBackground(Void… params){
for(int i=0;i<5;++i){
if(i==4){
threeParams = true;
publishProgress(i+1,i+2,i+3);
try{
Thread.sleep(2000);
}catch(Exception e){}
}else{
publishProgress(i+1,i+2);
try{
Thread.sleep(2000);
}catch(Exception e){}
}
}
onProgressUpdate(Integer… params){
if(threeParams){
tv.setText(params[0] + “,” + params[1] + “,” + params[2]);
threeParams = false;
}else{
tv.setText(params[0] + “,” + params[1]);
}
}
Когда я = 4, onProgressUpdate, я должен получить 5,6,7, но он падает с ArrayIndexOutOfBoundsException. Я понятия не имею, что я делаю неправильно.
Что вы предоставите в Params? – Shaishav
Просто прочитайте это сообщение об исключении (и для будущего: пропустите его с вашими вопросами!) --- он сообщает вам, в чем именно заключается ваша проблема: вы хотите получить доступ к некоторому индексу M ... но ваш массив имеет длину N; с M> N. Всегда есть плохая идея просто ** предположить **, что массив имеет определенный размер; не проверяя это! – GhostCat
@GhostCat, но я передаю 3 параметра функции. Значит, я должен правильно получить 3 параметра? Если мы не можем предположить, что тогда мы ставим под сомнение достоверность самой java! – Nikhil