Android AsyncTask传递变量值

时间:2014-11-02 17:09:28

标签: android

如何在doInBackground上传递值,以便它可以使用它。当我直接在doInBackgroud中键入String时,它可以工作。但我有三种类型“专业”,“通用”,“特殊”我不想创建3个asyncTask。在我的研究中,我发现我需要创建一个构造函数但是我没有得到它。

    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;
    }

}

3 个答案:

答案 0 :(得分:1)

只需按如下方式修改代码,

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;
}

&#34; yourType&#34;包含您在创建asyncTask时传递的类型

答案 1 :(得分:1)

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

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;
    }
}

答案 2 :(得分:0)

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

  • 单个String对象或
  • 一系列字符串

因此,在您的情况下,将一个字符串数组传递给异步任务的execute方法,doInBackground将使它们正常。在doInBackground中使用arg0参数作为String数组,你应该很好。