【问题标题】:Android: how to update UI dynamically?Android:如何动态更新 UI?
【发布时间】:2011-11-24 09:38:42
【问题描述】:

我有一个 Android 应用,我需要动态更改 UI:
例如:当用户按下按钮时,我想更改当前活动的视图,因为在某些情况下涉及很多视图,我需要显示ProgressDialog

我一直在使用AsyncTask,但我认为这不是最好的解决方案,因为AsyncTaskdoInBackground 运行不同的线程,所以我无法从那里更新 UI - 我必须使用runOnUiThread,它在 UI 线程中运行代码,但冻结显示的进度对话框。

我想应该有更多人遇到类似问题,因为在显示ProgressDialog 的同时更新 UI 似乎是应用程序定期执行的操作。

那么有人有办法解决这个问题吗?

【问题讨论】:

    标签: android android-layout asynchronous android-asynctask


    【解决方案1】:

    你可以这样使用:

    创建处理程序:

     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
     }
    

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      哦,你完全错了。你可以使用 asynctask 来达到这个目的。在我看来,这是黑莓和 iPhone 中最好的东西。但实现有点棘手,所以请接受它。看看这个example1example2。这将为您解决问题。如果您在实施这些方面仍然需要帮助,请回复我,我们可以针对您的具体情况解决。

      【讨论】:

      • 嘿,我查看了您提供的两个示例,似乎它们只教如何使用 AsyncTask。我已经知道了 :) 我想知道的是如何更改 UI 并在此过程中显示进度对话框
      猜你喜欢
      • 1970-01-01
      • 2018-02-10
      • 2022-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-06
      相关资源
      最近更新 更多