将字符串传递给AsyncTask

时间:2013-07-02 07:26:16

标签: android android-asynctask

所以我有一个字符串(这是一个页面的链接),我需要将它传递给AsyncTask。这是我的代码:

url = "http://www.railpnrapi.com/";
url = url.concat(numPNR);
new MyTask().execute(url);

这是我的AsyncTask:

class MyTask extends AsyncTask<String, Void, String>{

@Override
protected String doInBackground(String... params) {
String page = new Communicator().executeHttpGet(url);    
return page;
}

我知道我的实施是错误的!如何更正它以获得有效的字符串输出?

5 个答案:

答案 0 :(得分:2)

你需要在异步任务上通过索引获取字符串,如下面的代码:

class MyTask extends AsyncTask<String, Void, String>{

@Override
protected String doInBackground(String... params) {
String page = new Communicator().executeHttpGet(params[0]);    
return page;
}

您可以从asynctask获取返回字符串,如下面的代码:

String page = new MyTask().execute(url).get();

答案 1 :(得分:1)

变化:

String page = new Communicator().executeHttpGet(url);    

String page = new Communicator().executeHttpGet(params[0]);    

您也可以在AsyncTask的构造函数中获取String,并将其存储在实例中。

参数之后的...意味着它是一个vararg,这意味着它接受该类型的多个参数并将它们放入一个数组中。您需要将其视为方法中的数组。

答案 2 :(得分:1)

试试这个

String page = new Communicator().executeHttpGet(params[0]); 

答案 3 :(得分:1)

您应该像这样更改代码:

 class MyTask extends AsyncTask<String, Void, String>{

 @Override
 protected String doInBackground(String... params) {
 String page = new Communicator().executeHttpGet(params[0]);    
 return page;
 }

答案 4 :(得分:1)

像这样修改你的课程。

class MyTask extends AsyncTask<String, Void, String>{

String url;

MyTask(String paramUrl)
{
this.url = paramUrl;
}

@Override
protected String doInBackground(String... params) {
String page = new Communicator().executeHttpGet(url);    
return page;
}

并使用如下;

new MyTask(url).execute();