Я пытаюсь сделать мой проект Jsoup, сканируя какую-то вебтунную страницу.
и я успешно получил свои ссылки со страницы webtoon.
НО мой ListView не работает, выбрасывая сообщение об ошибке (NullPointerException)
Когда я использовал ListView, используя AsyncTask,
Android Studio продолжает давать мне исключение NullPointerException.
как показано ниже файл "JsoupAsyncTask.java"
Я пытался проверить, используя Log.e.
В MainActivity.java список не является нулевым,
однако в JsoupAsyncTask список имеет нулевое значение.
Я не понимаю эту проблему
MainActivity.Java
public class MainActivity extends AppCompatActivity {
public ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = findViewById(R.id.list_view); // NOT NULL here
JsoupAsyncTask jsoupAsyncTask = new JsoupAsyncTask();
jsoupAsyncTask.execute();
}
}
JsoupAsyncTask.java
class JsoupAsyncTask extends AsyncTask {
MainActivity mainActivity = new MainActivity();
ArrayList<WebtoonVO> list;
ListView AsyncListView = mainActivity.listView;
// NULL here! why?
@Override
protected void onPreExecute() {
super.onPreExecute();
list = new ArrayList<>();
// Check NULL
AsyncListView = mainActivity.listView;
if (AsyncListView == null) {
Log.e("AsyncListView" , "AsyncListView is NULL");
}
if (mainActivity.listView == null) {
Log.e("mainActivity.listView" , "mainActivity.listView is NULL");
}
}
// WebToon Crawling
@Override
protected ArrayList<WebtoonVO> doInBackground(Object[] objects) {
try {
String url = "https://comic.naver.com/webtoon/list.nhn?titleId=675554&weekday=mon";
Document gaus = Jsoup.connect(url).get();
Elements els = gaus.select("tr td:nth-child(odd)").select("a");
for (int i = 0; i < els.size(); i++) {
Element el = els.get(i);
String iLink = el.select("img").attr("src");
String title = el.select("img").attr("title");
String href = el.attr("href");
WebtoonVO vo = new WebtoonVO(iLink, title, href);
list.add(vo);
}
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
// AsyncListView is NULL
@Override
protected void onPostExecute(Object o) {
super.onPostExecute(list);
ListViewAdapter adapter = new ListViewAdapter(mainActivity, R.layout.cutom, list);
AsyncListView.setAdapter(adapter);
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
2019-05-26 01:18:24.472 11116-11116/org.techtown.samplewebtoon E/AsyncListView: AsyncListView is NULL
2019-05-26 01:18:24.472 11116-11116/org.techtown.samplewebtoon E/mainActivity.listView: mainActivity.listView is NULL
2019-05-26 01:18:25.062 11116-11116/org.techtown.samplewebtoon E/AndroidRuntime: FATAL EXCEPTION: main
Process: org.techtown.samplewebtoon, PID: 11116
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
at org.techtown.samplewebtoon.JsoupAsyncTask.onPostExecute(JsoupAsyncTask.java:79)
at android.os.AsyncTask.finish(AsyncTask.java:695)
at android.os.AsyncTask.access$600(AsyncTask.java:180)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:712)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
2019-05-26 01:18:25.071 11116-11116/org.techtown.samplewebtoon I/Process: Sending signal. PID: 11116 SIG: 9