Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在android中将字符串参数传递给AsyncTask_Java_Android_Android Asynctask - Fatal编程技术网

Java 如何在android中将字符串参数传递给AsyncTask

Java 如何在android中将字符串参数传递给AsyncTask,java,android,android-asynctask,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

这一定很容易,但我现在被困了一个小时左右。我正在将
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
    }
}
这是行不通的。我的问题是如何传递多个
String
对象。如果我传递一个字符串,它会工作,但如果我尝试在数组中传递它们,它会失败。顺便说一句,我不想将
AsyncTask
类的string参数更改为
string[]
,因为它会破坏我的其他代码。任何帮助都将不胜感激

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

这是将多个
String
参数传递给
AsyncTask

的最简单方法。如果要将多个对象传递给此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) {
        ...

你确定它坏了吗?对不起,如果我遗漏了什么

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
。因此,您基本上可以传递
零个或多个
字符串
对象(或其中的
数组
)作为函数
doInBackground
的参数。看


您在方法参数中声明的类型不应该与其中一个泛型参数匹配吗?您正在告诉
onPostExecute()
期望一个带有第三个
参数的
字符串。也就是说,你应该返回<代码>字符串在<代码> DONBACKLATE()/<代码>中,我认为字符串数组的语义不同于多个字符串参数。只是说,同意,你和往常一样是对的。。。我给出这个答案是基于这样一个事实,即这将有助于OP以最简单的方式获得他的结果……您也可以使用一个空构造函数来完成同样的事情,并定义一个方法来填充保存在MyAsyncTask中并由doInBackground使用的字符串类数组。有很多可能性。我喜欢这一个,因为您只使用一行codeThanx everyone从一个主类创建AsyncTask传递参数。我现在编辑了我的问题,以便第三个参数与返回值匹配。不过,为了简单起见,我选择了@Teo的回答。我每天都喜欢这个网站:)
MyAsyncTask myTask = new MyAsyncTask(5, 10, "a string", false);
String[] s = { "a", "b", "c", "d", "e" };
String[] s1 = new String[]{ "a", "b", "c", "d", "e" };