2011-11-24 78 views
3

我有一個Android應用程序,我需要動態更改UI:
例如:當用戶按下按鈕時,我想更改當前活動的視圖,並且在某些情況下涉及很多視圖,我需要顯示一個ProgressDialogAndroid:如何動態更新UI?

我一直在使用AsyncTask,但我認爲這不是最好的解決方案,因爲AsyncTaskdoInBackground運行不同的線程,所以我不能從那裏更新UI - 我必須使用runOnUiThread,它運行UI線程中的代碼,但會凍結顯示的進度對話框。

我想應該有更多的人有類似的問題,因爲更新UI時,顯示ProgressDialog似乎是由應用程序定期做的事情。

那麼有沒有人有解決這個問題?

回答

2

您可以使用這樣的事情:

創建一個處理程序:

final Handler handler = new Handler(); 
     final Runnable updateResults = new Runnable() { 
      public void run() { 
       updateResultsInUi(); 
      } 
     }; 

,每當你想更新UI,你可以使用任何你想要的

handler.post(updateResults); 

,並在。 updateResultsInUi方法你可以做UI的東東:

private void updateResultsInUi() { 
    // do stuff 
} 

希望它有幫助

0

哦,你完全和完全錯誤..你可以使用asynctask達到此目的。並且在我看來,這是黑莓和iPhone中錯過的最好的東西。但實施有點棘手,所以請與它。看看這個example1example2。這將爲你做詭計。如果你仍然需要幫助來實現這些,那麼回到我身邊,我們可以爲你的具體情況解決它。

+0

嘿,我看過你給的兩個例子,看起來他們只是教如何使用AsyncTask。我已經知道了:)我想知道的是**如何更改UI並顯示進度對話框,同時發生** – pandre