了java.lang.RuntimeException:同时用jsoup执行doInBackground()时出错 [英] java.lang.RuntimeException: An error occured while executing doInBackground() with jsoup
本文介绍了了java.lang.RuntimeException:同时用jsoup执行doInBackground()时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在Android开发的初学者,我从使用UI工作收到此错误prevents我的AsyncTask:
了java.lang.RuntimeException:执行doInBackground发生错误()
在android.os.AsyncTask $ 3.done(AsyncTask.java:300)
在java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
在java.util.concurrent.FutureTask.setException(FutureTask.java:222)
在java.util.concurrent.FutureTask.run(FutureTask.java:242)
在android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:231)
在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:587)
在java.lang.Thread.run(Thread.java:841)
我不明白为什么。我使用Android的工作室。构建它发布之前,我的应用程序工作得很好,但现在它崩溃。这是我的类:
@覆盖
公共无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
PAGENUMBER = getArguments()调用getInt(ARGUMENT_PAGE_NUMBER)。
}公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
捆绑savedInstanceState){
查看查看= inflater.inflate(R.layout.activity_my,NULL);
LV =(ListView控件)view.findViewById(R.id.listView1);
适配器=新ArrayAdapter<串GT;(getActivity(),R.layout.list_item,R.id.product_name,titleList);
新NewThread()执行();
返回视图。
}
公共类NewThread扩展的AsyncTask<弦乐,太虚,字符串> {
@覆盖
保护字符串doInBackground(字符串... ARG){
文档文档;
尝试{
文档= Jsoup.connect(http://ot76.ru/mob/list.php?vt=+(PAGENUMBER + 1)+与& NL = 0)。得到();
标题= doc.select(一);
对于(元素标题:标题){
titleList.add(titles.html()替换(与& NBSP;,()+));
}
}赶上(IOException异常五){
e.printStackTrace();
}
返回null;
}
@覆盖
保护无效onPostExecute(字符串结果){
lv.setAdapter(适配器);
lv.setOnItemClickListener(新AdapterView.OnItemClickListener(){
公共无效onItemClick(适配器视图<>母公司,观景,
INT位置,长的id){
字符串str = lv.getItemAtPosition(位置)的ToString();
意向意图=新意图(getActivity()getApplicationContext(),Rasp.class。);
intent.putExtra(URL,http://ot76.ru/mob/getroutestr.php?vt=+(PAGENUMBER + 1)+&放大器; NL = 0&安培; nmar =+ str.substring(0, str.indexOf(''))取代(к,K)取代(а,A)。替换(б,b)。替换(с,C ).replace(д,D));
intent.putExtra(停止,lv.getItemAtPosition(位置)的ToString()子(str.indexOf(''),str.length() - 1));
startActivity(意向);
}
});
}
}
解决方案
问题解决了。我只需要添加
-keep公共类org.jsoup。** {
上市 *;
}
我的ProGuard-android.txt文件。
I am a beginner in Android development and I'm getting this error that prevents my Asynctask from working using the UI:
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
I can't understand why. I'm using Android Studio. Before building it for release, my app worked fine but now it crashes. This is my class:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
pageNumber = getArguments().getInt(ARGUMENT_PAGE_NUMBER);
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_my, null);
lv = (ListView) view.findViewById(R.id.listView1);
adapter = new ArrayAdapter<String>(getActivity(), R.layout.list_item, R.id.product_name, titleList);
new NewThread().execute();
return view;
}
public class NewThread extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... arg) {
Document doc;
try {
doc = Jsoup.connect("http://ot76.ru/mob/list.php?vt=" + (pageNumber + 1) + "&nl=0").get();
title = doc.select("a");
for (Element titles : title) {
titleList.add(titles.html().replace(" ", "(") + ") ");
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
lv.setAdapter(adapter);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
String str = lv.getItemAtPosition(position).toString();
Intent intent = new Intent(getActivity().getApplicationContext(), Rasp.class);
intent.putExtra("url", "http://ot76.ru/mob/getroutestr.php?vt=" + (pageNumber + 1) + "&nl=0&nmar=" + str.substring(0, str.indexOf(' ')).replace("к", "k").replace("а", "a").replace("б", "b").replace("с", "c").replace("д", "d"));
intent.putExtra("stops", lv.getItemAtPosition(position).toString().substring(str.indexOf(' '), str.length() - 1));
startActivity(intent);
}
});
}
}
解决方案
Problem solved. I just needed to add
-keep public class org.jsoup.** {
public *;
}
to my proguard-android.txt file.
这篇关于了java.lang.RuntimeException:同时用jsoup执行doInBackground()时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文