Почему Android Studio AsyncTask дает мне Nullpointerexception, КОГДА я использую ListView? - PullRequest
0 голосов
/ 25 мая 2019

Я пытаюсь сделать мой проект 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
...