так что в основном я пытаюсь разобрать некоторые данные с веб-сайта с помощью 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();
}
}
Не можете ли вы просто получить доступ к членам 'backgroundDATA' во время onPostExecute? main, doc, imgURL и т. д.? – Tim
показывает, что он не может быть разрешен как переменная, объявляя его вне этой асинтезы, заставляет программу закрыть – mrp1nk
Вы уверены, что это члены, такие как 'main' и т. Д., Которые не могут быть решены? Вероятнее всего, это будут элементы пользовательского интерфейса, такие как 'drinkNameText', которые не могут быть разрешены, если ваш' AsyncTask' не определен как внутренний класс в вашей «Деятельности». – Squonk