这一定非常容易,但现在我被困了一个小时左右。我正在将String[]
传递给AsyncTask
类
class test extends AsyncTask<String, Void, Void>{
@Override
protected Void doInBackground(String... params) {
// Again, use either params local to this function
// or args local to the entire function...
// both would be redundant
String _NAMESPACE = params[0];
String _METHODNAME = params[1];
String _SOAPACTION = params[2];
String _USER_NAME = params[3];
String _USER_PASS= params[4];
// Do background stuff
}
}
我正在发送我的论据
test t = new test();
String[] s = {"a", "b", "c", "d", "e"};
t.execute(s);
这不起作用。我如何传递多个String
对象是我的问题。如果我传递一个字符串它可以工作,但如果我尝试在数组中传递它会失败。顺便说一句我不想将AsyncTask
类的字符串参数更改为String[]
,因为它会破坏我的其他代码。任何帮助将不胜感激。
答案 0 :(得分:2)
如果要将多个对象传递给此AsyncTask,可以创建一个匹配它们的构造函数。
private class MyAsyncTask extends AsyncTask<Void, Void, Integer>
{
public AsyncFileExists(Integer num1, Integer num2, String s, Boolean b) {
super();
// Do something with these parameters
}
@Override
protected void onPreExecute() { }
@Override
protected Integer doInBackground(Void... params) {
...
然后就这样做
MyAsyncTask myTask = new MyAsyncTask(5, 10, "a string", false);
答案 1 :(得分:2)
你确定它不起作用吗?请原谅,如果我遗失了什么!
String[] s = { "a", "b", "c", "d", "e" };
String[] s1 = new String[]{ "a", "b", "c", "d", "e" };
都会产生[a, b, c, d, e]
在doInBackground(String... params)
中,您期待String varargs
。因此,您基本上可以将zero or more
String
个对象(或它们的array
作为函数doInBackground
的参数传递。请参阅here。
答案 2 :(得分:1)
t.execute(string1, string2, string3, string4); // as many as you want..
这是将多个String
参数传递给AsyncTask
的最简单方法