2012-03-13 5 views
1

так что в основном я пытаюсь разобрать некоторые данные с веб-сайта с помощью AsyncTask, я хочу, чтобы он получил URL-адрес сайта из программы, обновил ui с загруженными данными и показал progressdialog (вращающееся колесо), поэтому я решил, что мне нужно это сделать как то: (UPDATE): к теперь его хорошо с переменными, но программа силой закрывает все равноAsyncTask и JSOUP Parsing

private class backgroundDATA extends AsyncTask<String, Void, Void> { 

    ProgressDialog dialog; 
    Document doc; 

    @Override 
    protected void onPreExecute() { 

     dialog = dialog.show(Result.this, " ", 
       " Loading. Please wait ... ", true); 
    } 

    @Override 
    protected Void doInBackground(String... params) { 

     try { 

      doc = Jsoup.connect(params[0]).get(); 


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

     return null; 
    } 




protected void onPostExecute(Void result) { 


     Elements maine; 
     Elements titleJSOUP; 
     Elements recipeJSOUP; 
     Elements instructionsJSOUP; 

     String recipE; 

     maine = doc.select("div#recipeContent"); 

     titleJSOUP = doc.select("title"); 

     recipeJSOUP = maine.select("ul.recipe"); 

     instructionsJSOUP = maine.select("p.instructions"); 



     recipE = recipeJSOUP.toString(); 


     drinkNameText.setText("THE " 
       + Jsoup.parse(titleJSOUP.toString()).text() 
         ); 



     dontListenText.setText(Jsoup.parse(titleJSOUP.toString()).text() 
         ); 

     recipeText.setText(prepareDRINK(recipE)); 

     instructionsText.setText(Jsoup.parse(instructionsJSOUP.toString()) 
       .text()); 

     dialog.dismiss(); 


    } 

}

+0

Не можете ли вы просто получить доступ к членам 'backgroundDATA' во время onPostExecute? main, doc, imgURL и т. д.? – Tim

+0

показывает, что он не может быть разрешен как переменная, объявляя его вне этой асинтезы, заставляет программу закрыть – mrp1nk

+0

Вы уверены, что это члены, такие как 'main' и т. Д., Которые не могут быть решены? Вероятнее всего, это будут элементы пользовательского интерфейса, такие как 'drinkNameText', которые не могут быть разрешены, если ваш' AsyncTask' не определен как внутренний класс в вашей «Деятельности». – Squonk

ответ

0

Ну это будет вызывать NullPointerException для начала ...

@Override 
protected void onPreExecute() { 

    dialog = dialog.show(Result.this, " ", 
      " Loading. Please wait ... ", true); 
} 

Вы не можете позвонить по телефону dialog.show(...), так как dialog будет null.

Вместо этого вызовите статический метод ProgressDialog.show(...).

+0

Хорошо, частично проблема решена - появляется диалоговое окно прогресса, но после в то время как оно исчезает, и приложение приводит к силе закрытия, а также после этого я не вижу logcat в eclipse – mrp1nk