Question

Dans mon application Android, j'ai créé un thread d'arrière-plan pour charger des données depuis Internet dans mon application.

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;

}

Mais cela donnera une exception suivante.

Android.view.Viewroot $ appeléFromWrongThreadException: Seul le fil d'origine qui a créé une hiérarchie de vue peut toucher ses vues.

Comment puis-je réparer cela??

Était-ce utile?

La solution

Modifiez votre asynctask pour retourner une chaîne. Dans onPostExecute, Mettez à jour la vue texte avec le résultat de la chaîne.

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);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top