繁体   English   中英

Webview中的Jsoup html显示不起作用

[英]Jsoup html display in webview not working

我正在 android studio 中开发一个 android 应用程序,该应用程序从亚马逊提取一些数据并将其显示在 web 视图中。

由于某种原因,webview 仍然是空白的,我已经使用 eclipse 在标准 java 项目中测试了我的代码。 Jsoup 代码很好并且在 eclipse 中运行干净,但在 android studio 中它也没有显示任何错误,除了没有 webview。

这是我的代码

public class showdata extends AppCompatActivity {
    WebView firstresault;
  public String amazonproduct;
    public Element productamazon;
    public class getres extends AsyncTask<Void,Void,Void> {


        @Override
        protected Void doInBackground(Void... params) {
            try {
                Document doc = Jsoup.connect("https://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=841351100182").get();
                productamazon = doc.select("div#s-item-container").first();
                amazonproduct = productamazon.toString();
            } catch (IOException e) {
                e.printStackTrace();
            }

            return null;
        }

        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);
            WebView wview = (WebView)findViewById(R.id.amazon_product);
            wview.loadData( amazonproduct, "text/html", null);
            Log.i("amazonproduct", "Null or Not");
        }
    }



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_showdata);
        new getres();



    }



}

我是 android api 的新手,所以我确信它很简单。 感谢所有帮助!

日志猫

E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
                                                                                          Process: com.example.rober.shoppingappbarcode, PID: 11086
                                                                                          java.lang.RuntimeException: An error occurred while executing doInBackground()
                                                                                              at android.os.AsyncTask$3.done(AsyncTask.java:318)
                                                                                              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.toString()' on a null object reference
                                                                                              at com.example.rober.shoppingappbarcode.showdata$getres.doInBackground(showdata.java:28)
                                                                                              at com.example.rober.shoppingappbarcode.showdata$getres.doInBackground(showdata.java:20)
                                                                                              at android.os.AsyncTask$2.call(AsyncTask.java:304)
                                                                                              at java.util.concurrent.FutureTask.run(FutureTask.java:237)

您需要使用execute()函数调用来执行您的AsyncTask

new getres().execute();

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_showdata);
        new getres().execute();
        //           ^^^^^^^
    }

尝试使用这个

productamazon = doc.getElementsByClass("s-item-container").first();

而不是这个

productamazon = doc.select("div#s-item-container").first();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM