[英]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
意味着它可以作为参数:
因此,在您的情况下,将字符串数组传递给异步任务的execute方法,而doInBackground将使它们很好。 在doInBackground内部,将arg0
参数用作String数组,您应该会很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.