2010-11-27 4 views
0

私はウェブサイトに移動し、XMLを取得して解析するプログラムを持っています。ここで最初のスレッドがうまく動作する2番目のスレッドからUIを更新する際に問題が発生しました

は、それがのonCreateメソッド

final Handler handler = new Handler(){ 

public void handleMessage(Message msg){ 
     progDialog.dismiss(); 
     parse(xmlOut);   
    }}; 

progDialog = ProgressDialog.show(この、 "仕事は..."、「何かをすることに始まっています、うまく動作するコードです... "); スレッド=新しいスレッド(){

 public void run(){ 

xmlOut = doSomeFunction(todaysDate); 
handler.sendEmptyMessage(0); 

}}; 

thread.start()。

ユーザーが別の日付を選択した場合、同じスレッドを再実行できない場合は、同じコードをコピーしてすべての変数名を変更して、 ButtonのOnClickListenerをintにします。その見解に触れることができるビュー階層を作成しただけ元のスレッド:私は例外を取得]ボタンをクリックし、この

android.view.ViewRoot $ CalledFromWrongThreadExceptionを取得

何か間違っているものの、正確な内容がわからない。あまりにも多くのスレッドプログラムを書いてはいけませんので、何か不足していると確信しています。

答えて

0

すべてのUIの変更は、そのスレッドまたはAsyncTaskの同じスレッドまたはハンドラから行う必要があります。 Check this postは、アンドロイドのAsyncTasksについて少し読んでいます。

私はあなたがButton宣言を正しくしなかったか、別のスレッドからイベントを設定していると推測しています。それはあなたにこのエラーを与えるでしょう。あなたがまだ殴られた場合は、ここに関連するコードを掲示してください。私はあなたを助けようと努力することができます。

関連する問題