Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android java.lang.RuntimeException:使用jsoup执行doInBackground()时出错_Android_Android Asynctask_Jsoup - Fatal编程技术网

Android java.lang.RuntimeException:使用jsoup执行doInBackground()时出错

Android java.lang.RuntimeException:使用jsoup执行doInBackground()时出错,android,android-asynctask,jsoup,Android,Android Asynctask,Jsoup,我是Android开发的初学者,我遇到了这样一个错误,使我的Asynctask无法使用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(Futu

我是Android开发的初学者,我遇到了这样一个错误,使我的Asynctask无法使用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)
我不明白为什么。我正在使用Android Studio。在构建发布之前,我的应用程序运行良好,但现在崩溃了。这是我的班级:

@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);
            }
        });
    }
}
@覆盖
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
pageNumber=getArguments().getInt(参数\u页码);
}
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.activity\u my,空);
lv=(ListView)view.findViewById(R.id.listView1);
adapter=newarrayadapter(getActivity(),R.layout.list_项,R.id.product_名称,标题列表);
新建NewThread().execute();
返回视图;
}
公共类NewThread扩展异步任务{
@凌驾
受保护的字符串doInBackground(字符串…arg){
文件文件;
试一试{
doc=Jsoup.connect(“http://ot76.ru/mob/list.php?vt=“+(页码+1)+”&nl=0”).get();
标题=文件选择(“a”);
用于(元素标题:标题){
titleList.add(titles.html().replace(“,”(“+”));
}
}捕获(IOE异常){
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(字符串结果){
低压设置适配器(适配器);
lv.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
String str=lv.getItemAtPosition(position.toString();
Intent Intent=新的Intent(getActivity().getApplicationContext(),Rasp.class);
intent.putExtra(“url”http://ot76.ru/mob/getroutestr.php?vt=“+(页码+1)+”&nl=0&nmar=“+str.substring(0,str.indexOf(“”))。替换(“а”,“k”)。替换(“а”,“a”)。替换(“б”,“b”)。替换(“б”,“c”)。替换(“а”,“d”);
intent.putExtra(“停止”,lv.getItemAtPosition(位置).toString().substring(str.indexOf(“”),str.length()-1));
星触觉(意向);
}
});
}
}

从您的代码中,似乎您正在用null(ArrayList)填充
适配器。因此,你得到了
NPE

在填写
标题列表后,应在onPostExecute(…)中为
列表视图创建
适配器对象
,否则它将为空。在onCreateView中(…)
标题列表
为空

在onCreateView(…)中创建标题列表的对象

titleList = new ArrayList<String>();
编辑:
尝试创建
自定义适配器
类,并尝试调试
文档
不为空。

从代码中可以看出,您正在用空值(ArrayList)填充
适配器。因此,你得到了
NPE

在填写
标题列表后,应在onPostExecute(…)中为
列表视图创建
适配器对象
,否则它将为空。在onCreateView中(…)
标题列表
为空

在onCreateView(…)中创建标题列表的对象

titleList = new ArrayList<String>();
编辑:
尝试创建
自定义适配器
类并尝试调试
文档
不为空。

问题已解决。我只需要补充一下

-保持公共类org.jsoup.*{
公众*;
}


到我的proguard-android.txt文件。

问题已解决。我只需要补充一下

-保持公共类org.jsoup.*{
公众*;
}


到我的proguard-android.txt文件。

当你尝试访问它时,doc可能为空。当你尝试访问它时,doc可能为空。再次出现此错误。屏幕截图:变量名为
中是什么?不知道。我不使用此变量检查
doc
中是否为空(…)
问题已解决。需要在proguard文件中添加-keep public class org.jsoup.*{public*;}无法工作(再次出现此错误。屏幕截图:变量名为
中是什么?不知道。我不使用此变量检查
doc
doInBackground(…)中是否为空。
问题已解决。需要添加-keep public class org.jsoup.*{public*;}在proguard文件中你救了我的命兄弟你救了我的命兄弟
if(titleList != null) {
 adapter = new ArrayAdapter<String>(getActivity(), R.layout.list_item, R.id.product_name, titleList);
 lv.setAdapter(adapter);
}