2017-01-31 4 views
1

Я работаю над Android-приложением в андроид-студии, приложение извлекает некоторые данные с amazon и отображает его в веб-просмотре.Jsoup html display in webview не работает

По какой-то причине веб-просмотр остается пустым, я проверил свой код в стандартном проекте java с использованием eclipse. Код Jsoup хорош и работает чистым в eclipse, но в студии Android он также не показывает ошибок, за исключением отсутствия веб-просмотра.

Вот мой код

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(); 



    } 



} 

Я новичок в андроида API, так что я уверен, что это что-то просто. Вся помощь приветствуется!

LogCat

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) 

ответ

1

вы должны выполнить ваш AsyncTask используя execute() вызов функции

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(); 
+0

близко, но мое приложение падает через несколько секунд после того, как я запускаю с исправлением вы добавили –

+0

@ Top-Bot должен быть затем некоторые другие вопросы, опубликовать сведения об ошибках LogCat в конце вашего вопроса –

+1

@ Top-Bot this 'doc.select (« div # s-item-container »). first();' ничего не возвращает, значит «null», следовательно, исключение –