Puis-je modifier le fil d'arrière-plan du contenu de l'interface utilisateur dans Android?
-
14-11-2019 - |
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??
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