执行后台任务时,我得到“java.lang.ArrayIndexOutOfBoundsException:length = 0; index = 0”。请帮忙。
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 :(得分:0)
例外是正确的。 ArrayList... params
,doInBackground
的前一个参数,是指您向构造函数传递给execute()
no的参数。
new fetchDescInBack(ilist,rlist,glist,yearlist).execute(ilist,rlist,glist,yearlist);
应该修复它。为避免混淆,您应选择或使用constructor
传递值或使用params