2012-07-23 110 views
0

我是Android開發新手,並且正在努力解決這個一直給我帶來一些挫折的問題。我正試圖關閉這個進度Dialog。當我運行該應用程序時,它顯示,信息被提取,並且UI被更新。但是,對話從來沒有被駁回。ProgressDialog不會在線程中解僱

progDialog = ProgressDialog.show(HomeActivity.this, "", "Fetching info...", true, false); 
new Thread(new Runnable() { 
    public void run() { 
     fetchInfomation(userID); //fetches information - Works 
     runOnUiThread(new Runnable() { 
      public void run() { 
       setLayoutList(); //updates UI - Works 
       progDialog.dismiss(); //doesn't seem to close progress dialog 
       firstView(); //displays prompt - Works 
      } 
     }); 
     progDialog.dismiss(); //doesn't close dialog either 
    } 
}).start(); 

任何想法?

+0

閱讀此:http://stackoverflow.com/q/891451/696723。你會從中得到一些想法 – CMA 2012-07-23 03:35:21

回答

0

您不能在外部線程內與UI進行交互。有一些技術可以做到這一點,但沒有必要。您可以使用Handler

例如:

和:

.... 
new Thread() { 

    @Override 
    public void run() { 
      ... // do your background jobs here 
      mHandler.sendEmptyMessage(...); // interact with UI 
     }); 
    } 
}.start(); 
0

這將是很好的做法,如果你做的UI線程任何GUI更新。在任何線程內,你都可以運行你的UI線程,在那裏你可以做UI的東西,否則你可以去消息處理程序也可以爲你做同樣的事情。

Runnable run_in_ui = new Runnable() { 
    @Override 
    public void run() { 
     // do your UI stuffs here 
    } 
}; 
runOnUiThread(run_in_ui);