我有一个活动对象myAct。 myAct创建并调用我的httpGetter对象,该对象扩展了AsyncTask
httpGetter做得很好!我的进度条很棒。它获取HTML数据。我在httpGetter.onPostExecute中放了一个吐司.....这里有HTML !!!!
如何将该数据从onPostExecute传回活动?我甚至不知道该为谷歌做些什么。我尝试了一些东西,我看到的所有示例都更新了一个textView,或者只是在onPostExecute中的toast中显示数据。我想在调用Activity中恢复一些东西。在我的httpGetter类中,我创建了一个方法来设置调用Activity的句柄,以为我可以使用结果String调用方法。没有运气。
答案 0 :(得分:1)
好的,所以谷歌搜索出现了以下解决方案。
myAct需要一个界面
public interface WebServiceListener
{
public void onHTTPGetComplete (ArrayList<String> arrayList);
}
public void onHTTPGetComplete (ArrayList<String> arrayList) {
String Response = arrayList.get(0);
Toast worked = Toast.makeText(mainPage.this, Response, Toast.LENGTH_LONG);
worked.show();
}
并且onPostExecute中的Async需要调用它
listener.onHTTPGetComplete(myList);
答案 1 :(得分:0)
如何使用intent.putExtra()将意图从httpGetter发送到myAct以传回数据?为此,您需要在创建AsyncTask时让httpGetter了解myAct的上下文。
答案 2 :(得分:0)
从AsyncTask传回一个包含HTML的包。例如:
@Override
protected Bundle doInBackground(String... params) {
Bundle b = new Bundle();
HttpGet get = new HttpGet("myurl");
HttpResponse response = HttpManager.execute(get);
HttpEntity entity = response.getEntity();
String raw_result = EntityUtils.toString(entity);
entity.consumeContent();
b.putString(IService.RESULT, raw_result);
b.putInt(IService.STATUS, IService.STATUS_FINISHED);
return b;
}
// override this in your activity as an anon inner class
@Override
protected void onPostExecute(Bundle b) {
int resultCode = b.getInt(IService.STATUS);
}
答案 3 :(得分:0)
我这样做是为了向我的HttpAsyncTask添加一个抽象的消费者方法,我将传递服务器从onPostExecute返回的数据。现在,调用它的活动需要实现使用者方法,使活动能够访问数据: - )