了java.lang.RuntimeException:同时用jsoup执行doInBackground()时出错 [英] java.lang.RuntimeException: An error occured while executing doInBackground() with jsoup

查看:171
本文介绍了了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("&nbsp;", "(") + ")    ");
            }
        } 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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆