2012-03-01 5 views
0

私のアンドロイドアプリケーションでは、インターネットからのデータを読み込むバックグラウンドスレッドを作成しました。そのバックグラウンドスレッドでは、以下のようにテキストフィールドにいくつかの値を設定しました。UIコンテンツのフォームを変更することはできますか?

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では、テキストビューを文字列の結果で更新します。

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); 
} 
関連する問題