2014-11-02 86 views
0

如何在doInBackground上传递值以便它可以使用它。当我在doInBackgroud中直接键入字符串时,它可以工作。但是我有三种类型的“Professional”,“General”,“Special”我不想创建3个asyncTask。在我的研究中,我发现我需要创建构造器,但我不明白它。Android 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; 
    } 

} 

回答

0

只需修改代码如下,

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

您通过型式
+0

所以如果我有一个新的loadQuestioners()。execute(type,type2,type3); String yourType = arg [0]; String yourType2 = arg [1];等等?数控THX – 2014-11-02 17:19:32

+0

然后你就可以访问它们使用的代码,用于(字符串类型:为arg0){ \t \t \t \t //做什么类型传递 \t \t \t} – Jickson 2014-11-02 17:21:41

+0

让我知道如果这能解决问题吗? – Jickson 2014-11-02 17:23:00

0

String... args意味着它可以采取如paramrters:

  • 单个字符串对象OR
  • 字符串

所以你的情况的阵列通过一个字符串数组,以你的异步任务的执行方法和doInBackground会让他们很好。在doInBackground内部,使用arg0参数作为字符串数组,你应该很好。

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

对不起格式不好,我从我的手机发布。 – 2014-11-02 17:24:43

+0

没问题,但在Asynctask内部构造构造器让我感到困惑,因为没有构造器它看起来会起作用 – 2014-11-02 17:28:20

+0

是的,两种方式都是正确的,并且工作,这只是一个偏好问题。就我个人而言,我更喜欢第二种方法,因为我发现它比第一种方法更具可读性,您必须使用数组索引来访问参数。 – 2014-11-02 17:32:36