将来自AsyncTask对象的html传递回调用Activity

时间:2011-06-09 01:07:51

标签: android android-activity android-asynctask

我有一个活动对象myAct。 myAct创建并调用我的httpGetter对象,该对象扩展了AsyncTask

httpGetter做得很好!我的进度条很棒。它获取HTML数据。我在httpGetter.onPostExecute中放了一个吐司.....这里有HTML !!!!

如何将该数据从onPostExecute传回活动?我甚至不知道该为谷歌做些什么。我尝试了一些东西,我看到的所有示例都更新了一个textView,或者只是在onPostExecute中的toast中显示数据。我想在调用Activity中恢复一些东西。在我的httpGetter类中,我创建了一个方法来设置调用Activity的句柄,以为我可以使用结果String调用方法。没有运气。

4 个答案:

答案 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返回的数据。现在,调用它的活动需要实现使用者方法,使活动能够访问数据: - )