Могу ли я изменить содержимое пользовательского интерфейса формы Background Thread в Android? - PullRequest
0 голосов
/ 01 марта 2012

в моем приложении для Android я создал фоновый поток для загрузки данных из Интернета в мое приложение. В этом фоновом потоке я установил некоторые значения для текстовых полей следующим образом.

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;

}

, но он дастследующее исключение.

android.view.ViewRoot $ CalledFromWrongThreadException: только исходный поток, создавший иерархию представлений, может касаться его представлений.

как я могу это исправить ??

1 Ответ

1 голос
/ 01 марта 2012

Измените AsyncTask, чтобы вернуть строку. В onPostExecute обновите текстовое представление с результатом String.

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...