Android AsyncTask传递变量值
如何在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;
}
}
只需修改代码如下,
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
您通过型式
String... args
意味着它可以采取如paramrters:
- 单个字符串对象OR
- 字符串
所以你的情况的阵列通过一个字符串数组,以你的异步任务的执行方法和doInBackground会让他们很好。在doInBackground内部,使用arg0
参数作为字符串数组,你应该很好。
我能看到的要对这个方法有两种: 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;
}
}
对不起格式不好,我从我的手机发布。 – 2014-11-02 17:24:43
没问题,但在Asynctask内部构造构造器让我感到困惑,因为没有构造器它看起来会起作用 – 2014-11-02 17:28:20
是的,两种方式都是正确的,并且工作,这只是一个偏好问题。就我个人而言,我更喜欢第二种方法,因为我发现它比第一种方法更具可读性,您必须使用数组索引来访问参数。 – 2014-11-02 17:32:36
所以如果我有一个新的loadQuestioners()。execute(type,type2,type3); String yourType = arg [0]; String yourType2 = arg [1];等等?数控THX – 2014-11-02 17:19:32
然后你就可以访问它们使用的代码,用于(字符串类型:为arg0){ \t \t \t \t //做什么类型传递 \t \t \t} – Jickson 2014-11-02 17:21:41
让我知道如果这能解决问题吗? – Jickson 2014-11-02 17:23:00