[英]Android AsyncTask crashing
Hi i have problem with AsyncTask, im parsing some data from web, but when i want to use this class my app crashes: 嗨,我有AsyncTask的问题,即时通讯从网络上解析了一些数据,但是当我想使用此类时,我的应用程序崩溃了:
10-31 12:29:29.941: E/AndroidRuntime(3741): FATAL EXCEPTION: AsyncTask #2
10-31 12:29:29.941: E/AndroidRuntime(3741): java.lang.RuntimeException: An error occured while executing doInBackground()
10-31 12:29:29.941: E/AndroidRuntime(3741): at android.os.AsyncTask$3.done(AsyncTask.java:299)
10-31 12:29:29.941: E/AndroidRuntime(3741): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
10-31 12:29:29.941: E/AndroidRuntime(3741): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
10-31 12:29:29.941: E/AndroidRuntime(3741): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
10-31 12:29:29.941: E/AndroidRuntime(3741): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
10-31 12:29:29.941: E/AndroidRuntime(3741): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
10-31 12:29:29.941: E/AndroidRuntime(3741): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
10-31 12:29:29.941: E/AndroidRuntime(3741): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
10-31 12:29:29.941: E/AndroidRuntime(3741): at java.lang.Thread.run(Thread.java:856)
10-31 12:29:29.941: E/AndroidRuntime(3741): Caused by: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
10-31 12:29:29.941: E/AndroidRuntime(3741): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
10-31 12:29:29.941: E/AndroidRuntime(3741): at java.util.ArrayList.get(ArrayList.java:304)
10-31 12:29:29.941: E/AndroidRuntime(3741): at morisson.Notowaniagieldowe.MainActivity$Cena.doInBackground(MainActivity.java:169)
10-31 12:29:29.941: E/AndroidRuntime(3741): at morisson.Notowaniagieldowe.MainActivity$Cena.doInBackground(MainActivity.java:1)
10-31 12:29:29.941: E/AndroidRuntime(3741): at android.os.AsyncTask$2.call(AsyncTask.java:287)
10-31 12:29:29.941: E/AndroidRuntime(3741): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
10-31 12:29:29.941: E/AndroidRuntime(3741): ... 5 more
and code is: 和代码是:
public class Cena extends AsyncTask<Integer,Void,String>{
ProgressDialog dialog;
@Override
protected String doInBackground(Integer... params) {
int a = params[0];
try {
Document doc = Jsoup.connect("http://www.money.pl/gielda/gpw/akcje/").get();
Elements elements = doc.select("td.ar");
System.out.println("test2:" + elements.get(a).text());
return elements.get(a).text();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
I use also 2 others class which use AsyncTask but i don't have any problems with them. 我也使用AsyncTask的其他2类,但我没有任何问题。 crash appear when im trying to print "test2", and ofcourse when im trying to return a value. 我尝试打印“ test2”时会出现崩溃,当然,当我尝试返回值时也会出现崩溃。 Any suggestions? 有什么建议么?
If you closely inspect the error log you will find that the actual error here is ArrayIndexOutOfBound
exception. 如果仔细检查错误日志,您会发现这里的实际错误是ArrayIndexOutOfBound
异常。 Meaning either elements.get(a)
or int a = params[0];
含义elements.get(a)
或int a = params[0];
is likely to be returning null. 可能返回null。
Since the exception has not been caught (which led to your crash), I highly suspect int a = params[0];
由于尚未捕获到异常(这导致了崩溃),因此我高度怀疑int a = params[0];
to be the cause of issue because it is the only code that is not in the try catch
block. 成为问题的原因,因为它是try catch
块中没有的唯一代码。
try {
Document doc = Joup.connect("http://www.money.pl/gielda/gpw/akcje/").get();
Elements elements = doc.select("td.ar");
if(elemetns!=null&&a!=null){
System.out.println("test2:" + elements.get(a).text());
return elements.get(a).text();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.