如何在Android Studio 2019中修复Jsoup nullpointerexception

时间:2019-01-21 12:53:30

标签: java android android-studio jsoup

我正在创建一个应用程序,我想在其中使用jsoup抓取Google数据并将其显示到android studio中的文本视图中。

但是在jsoup的帮助下进行了一些编码之后,我得到了以下错误:

E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
Process: com.example.yasht.cricketapp, PID: 11929
java.lang.RuntimeException: An error occurred while executing doInBackground()
    at android.os.AsyncTask$3.done(AsyncTask.java:325)
    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
    at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
    at java.util.concurrent.FutureTask.run(FutureTask.java:242)
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
    at java.lang.Thread.run(Thread.java:761)
 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String org.jsoup.nodes.Element.text()' on a null object reference
    at com.example.yasht.cricketapp.Bottomnav.score_scrape.doInBackground(score_scrape.java:30)
    at com.example.yasht.cricketapp.Bottomnav.score_scrape.doInBackground(score_scrape.java:13)
    at android.os.AsyncTask$2.call(AsyncTask.java:305)
    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 
    at java.lang.Thread.run(Thread.java:761) 

这是我的带有异步任务的jsoup代码:

    public class score_scrape extends AsyncTask<Void,Void,Void> {

 String words;
 TextView score;

public score_scrape( TextView score){
    this.score =score;

}


    @Override
    protected Void doInBackground(Void... voids) {

        try {
            Document doc = Jsoup.connect("https://www.google.com/search?q=india+vs+australia+3rd+odi+live+score").get();
            Element element = doc.select("div[imspo_mh_cricket__score-major]").first();
            words = element.text();

        } catch (IOException e) {
            e.printStackTrace();
        }


        return null;
    }

    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
        score.setText(words);
    }
}

我正在使用异步任务方法,该方法在我的主要活动中声明。

评论以获取更多信息。

1 个答案:

答案 0 :(得分:0)

您不想使用select,只需在下面的行中进行更改。

更改行

Element element = doc.select("div[imspo_mh_cricket__score-major]").first();

收件人

Element element = doc.getElementsByClass("imspo_mh_cricket__score-major").first();

输出:

230