java - 异步任务 : pass two or more values from doInBackground to onPostExecute

标签 java android android-asynctask

我有一个 Asynctask,它检索两个 int 值,我想将它们传递给 onPostExecute 以在 View 上显示它们。
这是我的代码:

    public class QueryServer extends AsyncTask <String, Void, Integer> { 

    protected Integer doInBackground(String... serverAddress) {
        Log.d("QueryServer", ""+serverAddress[0]);
        MCQuery mcQuery = new MCQuery("" + serverAddress[0] ,25565);
        QueryResponse response = mcQuery.basicStat();

        int Onlineplayers = response.getOnlinePlayers(); //first vaule
        int Maxplayers = response.getMaxPlayers();  //second vaule

        Log.d("MCQuery", "" + Onlineplayers + " OnlinePlayers");
        return Onlineplayers;

    }

    protected void onPostExecute(Integer Onlineplayers){

        TextView onlinePlayersView = (TextView) findViewById(R.id.online_players);

        onlinePlayersView.setText(""+Onlineplayers+"/"+ Maxplayers); //i need to pass Maxplayers to use it here


    }

提前谢谢你。

最佳答案

您可以定义一个包含两个整数的 Wrapper 类:

public class Wrapper
{
    public int onlinePlayers;
    public int maxPlayers;
}

并用它代替 Integer:

public class QueryServer extends AsyncTask<String, Void, Wrapper> { 

    protected Wrapper doInBackground(String... serverAddress) {
        Log.d("QueryServer", ""+serverAddress[0]);
        MCQuery mcQuery = new MCQuery("" + serverAddress[0] ,25565);
        QueryResponse response = mcQuery.basicStat();

        int onlinePlayers = response.getOnlinePlayers(); //first vaule
        int maxPlayers = response.getMaxPlayers();  //second vaule

        Log.d("MCQuery", "" + onlinePlayers + " onlinePlayers");
        Wrapper w = new Wrapper();
        w.onlinePlayers = onlinePlayers;
        w.maxPlayers = maxPlayers;
        return w;

    }

    protected void onPostExecute(Wrapper w){

        TextView onlinePlayersView = (TextView) findViewById(R.id.online_players);

        onlinePlayersView.setText(""+w.onlinePlayers+"/"+ w.maxPlayers); //i need to pass Maxplayers to use it here


    }

关于java - 异步任务 : pass two or more values from doInBackground to onPostExecute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11833978/

相关文章:

android - 无法在两个日期之间获取年份

android - 如何在构建服务器和工作站之间同步Gradle/Android版本代码

java - Android,我如何从私有(private)内部类(AsyncTask)更新 View 元素

java - 配置 Tomcat 以使用磁盘内存

java - 自定义 SOAP 响应的 JAX-WS 前缀

iphone - 如何将运动传感器数据从 Iphone 转换到 Android?

java - 我的代码在 asyncTask 中不起作用

java.lang.SecurityException : Permission denied (missing INTERNET permission? ) 即使在 android list 中添加此权限

java - 如何在spring-mvc中接受具有相同id的多个REST查询参数?

java - 如何对列表中的日期进行排序?