如何在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;
}
}
答案 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
意味着它可以作为参数:
因此,在您的情况下,将一个字符串数组传递给异步任务的execute方法,doInBackground将使它们正常。在doInBackground中使用arg0
参数作为String数组,你应该很好。