Ne peut pas accéder à “findViewById” dans AsyncTask

Je suis en utilisant une classe AsyncTask pour télécharger des données à partir d'un fichier php. Après le téléchargement, j'ai envie de mettre ces données, dans différents TextViews, mais je ne peux pas utiliser la méthode findViewById.

Le problème, c'est que je suis en train de faire cela en classes distinctes, et tout cela dans un fragment.

C'est mon code:

public class RecuperarComentarisFoto extends AsyncTask<String, String, String>{
private Context mContext;
[...]
public RecuperarComentarisFoto(Context context){
    this.mContext=context;
}
@Override
protected void onPreExecute() {
    [...]
}

@Override
protected String doInBackground(String... arg0) { 
    params.add(new BasicNameValuePair("pid", "1"));
    JSONObject json = jsonParser.makeHttpRequest(url_get_comentaris, "GET", params);
    JSONArray productObj;
    //HERE I RETRIEVE DATA FROM JSON. ITS WORKING OK.

    return null;
}

Et où j'ai le problème:

@Override
protected void onPostExecute(String result) {
    super.onPostExecute(result);
    this.pDialog.dismiss();
    TextView comentariEditText = (TextView) findViewById(R.id.commentsMostrar);
}

J'ai essayé ceci:

        TextView comentariEditText = (TextView) mContext.findViewById(R.id.commentsMostrar);

Mais ne fonctionne pas trop.

Remarque que je suis à l'appel de cette AsyncTask à partir d'un Fragment. Comme vous pouvez le voir, j'ai dû passer le contexte récupérées par getActivity() à l'AsyncTask:

public class MyFragmentA extends Fragment {
Context cont;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View myFragmentView = inflater.inflate(R.layout.fragment_a, container, false);

    cont=getActivity();
    new RecuperarComentarisFoto(cont).execute();
    return myFragmentView;
}


}

Que dois-je faire?

Merci.

Publier vos LogCat

OriginalL'auteur Reinherd | 2013-01-04