0

onPostExecute私はofによって作成された結果を に渡すことに取り組んできましAsyncTaskFragment。私は でそれを行う方法を知っていますがActivity、どうすれば で((MyActivity)context).someMethod(); これを行うことができFragmentますか?

私はそうします((MyFragment)contextOfAsyncTask).methodInFragment()が、「コンテキストからMyFragmentにキャストできません」というエラーが表示されます。

これがAsyncTaskの私のコードです

class AsyncMethod extends 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);
}
4

1 に答える 1

0

からメソッドを呼び出したいようです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();
  }
}

私はそれが役立つことを願っています..

于 2019-12-30T10:25:42.820 に答える