所以我有一个字符串(这是一个页面的链接),我需要将它传递给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;
}
我知道我的实施是错误的!如何更正它以获得有效的字符串输出?
答案 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();