En mi aplicación de Android, he creado un hilo de fondo para cargar datos de Internet en mi aplicación. En ese hilo de fondo, he establecido algunos valores en los campos de texto de la siguiente manera.

protected Void doInBackground(Void... params) {

if(!isDataFromInternetAvailable){
  re=(TextView)findViewById(android.R.id.empty);
  re.setText("no data ");
}
else{
re=(TextView)findViewById(android.R.id.empty);
  re.setText("You have data ");
}

return null;

}

Pero dará la siguiente excepción.

android.view.ViewRoot $ CalledFromWrongThreadException: solo el hilo original que creó una jerarquía de vistas puede tocar sus vistas.

¿¿Cómo puedo arreglar esto??

0
Dinesh Anuruddha 1 mar. 2012 a las 09:11

1 respuesta

La mejor respuesta

Cambie su AsyncTask para devolver un String. En onPostExecute, actualice la vista de texto con el resultado de cadena.

protected String doInBackground(Void... params) {
    return isDataFromInternetAvailable
        ? "You have data "
        : "no data ";
}

protected void onPostExecute(String result) {
    re = (TextView) findViewById(android.R.id.empty);
    re.setText(result);
}
1
Ted Hopp 1 mar. 2012 a las 09:13