【问题标题】:Passing Value of Asynctask in Fragment在 Fragment 中传递 Asynctask 的值
【发布时间】:2013-05-06 07:27:25
【问题描述】:

我一直在努力将AsyncTaskonPostExecute 创建的结果传递给Fragment。 我知道如何在Activity 中做到这一点,例如((MyActivity)context).someMethod(); 但是我如何在Fragment 中做到这一点?

我是 ((MyFragment)contextOfAsyncTask).methodInFragment(),但它给了我一个错误“无法从 Context 转换为 MyFragment”。

这是我在 AsyncTask 中的代码

类 AsyncMethod 扩展 AsyncTask{

ArrayList<MyObject> myVar= new ArrayList<MyObject>();
String result;
ListView lv;
Context contextOfAsyncTask;


public AsyncMethod(Context xc, ListView xl){
    contextOfAsyncTask= xc;
    lv = xl;

}

@Override
protected void onPreExecute() {
}

@Override
protected Void doInBackground(Void...param) {
    HttpClient httpclient = new DefaultHttpClient();

            HttpPost httppost = new HttpPost(http://www.myurl.com/something.php);

            HttpResponse httpResponse = httpclient.execute(httppost);

            HttpEntity httpEntity = httpResponse.getEntity();

            result = EntityUtils.toString(httpEntity);      

    return null; //EVERYTHING IS WORKING FINE HERE, AND I CAN GET THE VALUE
}

@Override
protected void onPostExecute(Void res) {
             //it does not work here
    ((MyFragment)contextOfAsyncTask).methodInFragment(result);
}

【问题讨论】:

  • 您能发布您的 AsyncTask 代码吗?
  • @note-knotz 你想返回什么,你想返回哪里。?

标签: java android android-fragments android-asynctask fragment


【解决方案1】:

看起来你想从AsyncTask调用方法

class YourTask extends AsyncTask<Void, Void, Void> {

  private SomeFragment fragment;

  YourTask(SomeFragment fragment) {
    this.fragment = fragment;
  }

  @Override
  protected Void doInBackground(Void... params)
  {
    //do whatever you want to do
  }

  @Override
  protected void onPostExecute(Void res)
  {
     fragment.yourmethod();
  }
}

希望对你有帮助..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多