如何在android studio中获取AsyncTask的返回值

问题描述 投票:0回答:2

[Helloo,我知道有很多关于此的文章,但它使我很困惑,我已经读了很多文章,但我无法解决一个简单的问题。我只想从我的主要activity.kt中获得一个类,当我这样做时>

[val QuizzList = Network().execute();(在main activity.kt中)

我希望QuizzList成为我的班级,而不是异步任务等等。

我需要在这里做什么才能使此任务返回QuizCollection(它是一个自定义类)?


package com.example.myapplication;

import android.os.AsyncTask;
import android.os.Build;

import androidx.annotation.RequiresApi;

import com.google.gson.Gson;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class Network extends AsyncTask<String, Integer, Object> {

    static InputStream is = null;

    static JSONObject jObj = null;
    static String json = "";

    // constructor
    public Network() {

    }
    @RequiresApi(api = Build.VERSION_CODES.KITKAT)
    @Override
    protected QuizCollection doInBackground(String... params) {

        try {
            // On doit utiliser cet adresse URL, le 127.0.0.1 ne marche pas a cause du serveur qui
            // Roule deja sur l'adresse.

            //Get the content from the server
            URL url = new URL("http://10.0.2.2:8080/api/quizz");
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            con.setRequestProperty("Content-Type", "application/json");
            con.setRequestMethod("GET");
            BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
            String inputLine;
            StringBuffer content = new StringBuffer();
            while ((inputLine = in.readLine()) != null) {
                content.append(inputLine);
            }
            Gson gson = new Gson();
            JSONArray jsonArray = new JSONArray(content.toString());
            System.out.println("Le content : "+content.toString());




            QuizCollection quizz = new QuizCollection();
            for (int i=0; i<jsonArray.length();i++){
                System.out.println(jsonArray.get(0).toString());
                Quiz quiz = gson.fromJson(jsonArray.getJSONObject(i).toString(), Quiz.class);
                System.out.println("Titre "+quiz.Title);
                quizz.addQuiz(quiz);
            }


            System.out.println("ca fonctionne?"+quizz.QuizArray.get(0).Title);

            in.close();
            return quizz;
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return null;
    }
    protected void onPostExecute(Object page)
    {
        //onPostExecute
    }

}



    

[Helloo,我知道有很多关于此的文章,但它使我很困惑,我已经读了很多文章,但我无法解决一个简单的问题。我只想从我的主要activity.kt中获得一个类,当...

java android-studio android-asynctask
2个回答
0
投票

您应该使用回调


0
投票

我必须这样做

© www.soinside.com 2019 - 2024. All rights reserved.