2010-11-27 38 views
0

我有一個程序,我要去一個網站,抓取XML和解析,很簡單。從第二個線程更新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();

然後,如果用戶選擇不同的日期,不能重新運行同一個線程,那麼我在頁面上有一個按鈕,用於重新載入數據,所以我只複製完全相同的代碼,更改了所有變量名稱並將它是按鈕的OnClickListener。

當我按一下按鈕我得到一個異常,並得到這個

android.view.ViewRoot $ CalledFromWrongThreadException:只有原始的創建視圖層次可以觸摸其觀點線程。

做錯了什麼,但不知道究竟是什麼。我不'寫太多線程程序,所以我肯定我錯過了一些東西。

回答

0

所有UI更改應該從同一線程或該線程中的處理程序或從AsyncTask完成。 Check this post在android中閱讀關於AsyncTasks的一些信息。

我猜你沒有做Button聲明,或者你是從另一個線程設置事件。這會給你這個錯誤。如果你仍然感到震驚,那麼在這裏發佈相關的代碼,我可以嘗試幫助你更好。