2012-03-01 1 views
0

в моем приложении для Android я создал фоновый поток для загрузки данных из Интернета в мое приложение. В этом фоновом потоке я установил некоторые значения в текстовые поля, как показано ниже.Могу ли я изменить содержимое содержимого пользовательского интерфейса Background Thread в 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

Измените свою 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); 
} 
Смежные вопросы