[英]Passing Value of Asynctask in Fragment
我一直在努力传递Fragment
中AsyncTask
的onPostExecute
创建的结果。 我知道如何在Activity
执行此操作,例如((MyActivity)context).someMethod();
但是我怎么能在Fragment
做到这一点呢?
我这样做((MyFragment)contextOfAsyncTask).methodInFragment()
但它给了我一个错误“无法从上下文转换到 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
调用方法
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();
}
}
我希望它有帮助..
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.