如何将字符串参数传递给android

时间:2015-05-27 20:45:57

标签: java android android-asynctask

这一定非常容易,但现在我被困了一个小时左右。我正在将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[],因为它会破坏我的其他代码。任何帮助将不胜感激。

3 个答案:

答案 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

enter image description here

答案 2 :(得分:1)

t.execute(string1, string2, string3, string4);  // as many as you want..

这是将多个String参数传递给AsyncTask的最简单方法