繁体   English   中英

Android AsyncTask传递变量值

[英]Android AsyncTask pass variable value

如何在doInBackground上传递值,以便可以使用它。 当我直接在doInBackgroud内部键入String时,它将起作用。 但是我不想创建3个asyncTask,这三个类型是“ Professional”,“ General”,“ Special”。 在我的研究中,我发现我需要创建构造器,但是我不明白。

    String type = "professional"; 


    new loadQuestioners().execute(type);

    public class loadQuestioners extends AsyncTask <String, Integer, JSONArray> {

    @Override
    protected JSONArray doInBackground(String... arg0) {

        //is the arg0 is the type i passed?

        return null;
    }

}

只需如下修改代码,

public class loadQuestioners extends AsyncTask <String, Integer, JSONArray> {

@Override
protected JSONArray doInBackground(String... arg0) {

    //is the arg0 is the type i passed?
    String yourType=arg0[0];


    return null;
}

“ yourType”包含您在创建asyncTask时传递的类型

我可以看到两种解决方法:第一种:

new loadQuestioners().execute("professional");

public class loadQuestioners extends AsyncTask <String, Integer, JSONArray> 
{
    @Override
    protected JSONArray doInBackground(String... arg) 
    {
        String word = arg[0];
        return null;
    }
}

第二:创建一个构造函数并传递参数:

new loadQuestioners("professional").execute();

public class loadQuestioners extends AsyncTask <String, Integer, JSONArray> 
{
    private String word;

    public loadQuestioners(String word)
    {
         this.word = word;
    }

    @Override
    protected JSONArray doInBackground(String... arg0) 
    {
        //use word
        return null;
    }
}

String... args意味着它可以作为参数:

  • 一个String对象或
  • 字符串数组

因此,在您的情况下,将字符串数组传递给异步任务的execute方法,而doInBackground将使它们很好。 在doInBackground内部,将arg0参数用作String数组,您应该会很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM