传递字符串到AsyncTask
所以我有一个字符串(这是一个页面的链接),我需要将它传递给一个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;
}
我知道我的实现是错误的!我如何纠正它以获得一个有效的输出作为字符串?
,你需要通过指数得到串上的异步任务如下面的代码:
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();
我只需要传递一个字符串,那么定义AsyncTask
第二个参数void假定onprogressupdate()方法和doinbackground()的antoher字符串返回到您的asynctask类覆盖方法的postexecute()方法! –
那么编写post执行方法是强制性的吗?我如何在主活动中存储doInbackground中返回的字符串? String page = new MyTask()。execute(url).toString();好吗? –
变化:
String page = new Communicator().executeHttpGet(url);
到
String page = new Communicator().executeHttpGet(params[0]);
你也可以把字符串在构造函数中为您的AsyncTask并将其存储在该实例。
...
之后的参数意味着它是一个可变参数,这意味着它采用该类型的多个参数并将它们放入一个数组中。你需要像你的方法中的数组那样对待它。
试试这个
String page = new Communicator().executeHttpGet(params[0]);
您应该像这样更改您的代码:
class MyTask extends AsyncTask<String, Void, String>{
@Override
protected String doInBackground(String... params) {
String page = new Communicator().executeHttpGet(params[0]);
return page;
}
像这样修改你的班级。
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();
为什么你需要另一个类,你可以只有方法,并传递字符串作为'String page = executeHttpGet(params [0])'。检查你以前的问题 – Raghunandan
@Raghunandan我刚刚在你的主要活动中定义了这个类。这是不是一个很好的面向对象操作? –
在此处发布您的代码活动代码。 – Raghunandan