2011-11-24 71 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