Работа отдельного потока с Jsoup. Android

230
20 сентября 2018, 15:00

Был создан класс Parser,использующий Jsoup, который объединял в себе методы для парсинга значений с сайта. В обычной консоли все его методы работали прекрасно. Затем я перенёс этот класс в Android Studio для дальнейшего использования в приложении. Но в главном потоке нельзя взаимодействовать с интернетом поэтому я вынужден был перенести все использование Parser в новый поток:

class ProgressTask extends AsyncTask<Void,Void,Void>{
    @Override
    protected Void doInBackground(Void... voids) {
        title = Parser.getRandomStory("title");
        content = Parser.getRandomStory("story");
        return null;
    }
    @Override
    protected void onPostExecute(Void aVoid) {
        title_story.setText(title);
        content_story.setText(content);
    }
}

upd Код метода:

public static String getRandomStory(String value){
    String link = "https://pastach.ru/p/random";
    String title = "Title: ";
    String story = "Story: ";
    try {
        Document doc = Jsoup.connect(link).get();
        Element title_text = doc.getElementsByClass("header-title").get(0);
        title += title_text.text();
        Element story_text = doc.getElementsByClass("paste-content").get(0);
        story += story_text.text();
        //System.out.println(title);
        //System.out.println(story);
    } catch (IOException e) {
        return ("CONNECTION HAS BEEN LOST");
    }
    if(value.equals("story")){
        return story;
    }else{
        return title;
    }
}

upd2: логи:

07-22 20:38:01.768 24422-24422/com.example.len.coolstorybro E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.len.coolstorybro, PID: 24422 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference at com.example.len.coolstorybro.RandomStoryFragment$ProgressTask.onPostExecute(RandomStoryFragment.java:54) at com.example.len.coolstorybro.RandomStoryFragment$ProgressTask.onPostExecute(RandomStoryFragment.java:43) at android.os.AsyncTask.finish(AsyncTask.java:651) at android.os.AsyncTask.access$500(AsyncTask.java:180) at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668) at android.os.Handler.dispatchMessage(Handler.java:111) at android.os.Looper.loop(Looper.java:207) at android.app.ActivityThread.main(ActivityThread.java:5927) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:958) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:819)

Но по каким то причинам переменный title и content всегда равны null. Что я делаю не так и как мне это исправить?

READ ALSO
java SQLite не сохраняет строку

java SQLite не сохраняет строку

при нажатии на кнопку программа пытается сохранить строки в базу данныхВыглядит это так:

199
Почему компилятор считает String Object`ом?

Почему компилятор считает String Object`ом?

Выходит ошибка при вызове super(

205
блок Emojione.min.js

блок Emojione.min.js

Необходимо вставить в чат блок со смайликами, насколько я понял имеется скрипт в три строки

228
Отсутвие задержки при вызове setTimeout

Отсутвие задержки при вызове setTimeout

ФункцияscheduleUpdatesInRedis() назначает обновленияДля этого, она вызывает функцию performScheduledUpdateOfDataInRedis(), рекурсивно вызывающую себя спустя время,...

201