java.lang.RuntimeException: Fehler beim ausführen von doInBackground() mit jsoup
Ich bin ein Anfänger in der Android-Entwicklung, und ich bin immer dieser Fehler, der verhindert, dass mein Asynctask aus arbeiten mit der Benutzeroberfläche:
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
Ich kann nicht verstehen, warum. Ich bin mit Android Studio. Bevor es für den release meiner app geklappt hat, aber jetzt stürzt es ab. Das ist meine Klasse:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
pageNumber = getArguments().getInt(ARGUMENT_PAGE_NUMBER);
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_my, null);
lv = (ListView) view.findViewById(R.id.listView1);
adapter = new ArrayAdapter<String>(getActivity(), R.layout.list_item, R.id.product_name, titleList);
new NewThread().execute();
return view;
}
public class NewThread extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... arg) {
Document doc;
try {
doc = Jsoup.connect("http://ot76.ru/mob/list.php?vt=" + (pageNumber + 1) + "&nl=0").get();
title = doc.select("a");
for (Element titles : title) {
titleList.add(titles.html().replace(" ", "(") + ") ");
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
lv.setAdapter(adapter);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
String str = lv.getItemAtPosition(position).toString();
Intent intent = new Intent(getActivity().getApplicationContext(), Rasp.class);
intent.putExtra("url", "http://ot76.ru/mob/getroutestr.php?vt=" + (pageNumber + 1) + "&nl=0&nmar=" + str.substring(0, str.indexOf(' ')).replace("к", "k").replace("а", "a").replace("б", "b").replace("с", "c").replace("д", "d"));
intent.putExtra("stops", lv.getItemAtPosition(position).toString().substring(str.indexOf(' '), str.length() - 1));
startActivity(intent);
}
});
}
}
- wahrscheinlich doc ist null, wenn Sie versuchen, yo zugreifen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Problem gelöst. Ich brauchte nur hinzufügen
-keep public class org.jsoup.** {
public *;
}
meine proguard-android.txt Datei.
Aus deinem code scheint es, füllen Sie die
adapter
mit null (ArrayList). So bekommen SieNPE
für, die.Sollten Sie die
adapter's object
fürListView
im onPostExecute(...) nach dem Auffüllen dertitleList
sonst wird es leer. In onCreateView(...)titleList
ist null.in onCreateView(...) erstellen
titleList's
Objekt.entfernen Sie diese Zeile aus onCreateView(...)
in onPostExecute(...) füllen
ListView
wie diese nach dem Auffüllen der Wert von web-service -EDIT :
Versuchen Sie, erstellen
custom adapter
Klasse und versuchen, zu Debuggendoc
ist nicht null.in
?doc
null ist oder nicht indoInBackground(...)