1

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

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

这是我的异步任务:

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

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

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

4

5 回答 5

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();
于 2013-07-02T07:27:05.627 回答
1

改变:

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

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

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

...after a 参数表示它是一个可变参数,这意味着它接受该类型的多个参数并将它们放入一个数组中。您需要将其视为方法中的数组。

于 2013-07-02T07:26:51.433 回答
1

您应该像这样更改代码:

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

 @Override
 protected String doInBackground(String... params) {
 String page = new Communicator().executeHttpGet(params[0]);    
 return page;
 }
于 2013-07-02T07:29:56.953 回答
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();
于 2013-07-02T07:32:12.197 回答
1

尝试这个

String page = new Communicator().executeHttpGet(params[0]); 
于 2013-07-02T07:27:51.350 回答