【问题标题】:Problem using ProgressBar.setProgress(int)使用 ProgressBar.setProgress(int) 的问题
【发布时间】:2011-08-17 14:25:26
【问题描述】:

08-18 11:24:09.503: ERROR/AndroidRuntime(22649): Caused by: android.view.ViewRoot$CalledFromWrongThreadException: 只有创建视图层次结构的原始线程才能触摸其视图。

有什么解决办法吗? :/

【问题讨论】:

    标签: android progress-bar


    【解决方案1】:

    是的。 在非 UI 线程中无法触摸 UI,因此解决方案是在 runOnUiThread 中运行有问题的代码:

    runOnUiThread(new Runnable() {
        public void run() {
            //your problematic code
        }
    });
    

    【讨论】:

    • 我可以做一些类似 doSync 的类扩展 AsyncTask 实现 runOnUiThread 吗?
    • 这有什么需要?您可以在 doInBackground() 中运行此方法
    【解决方案2】:

    只有 UI 线程可以操作视图和东西。如果您在另一个线程中工作,请尝试使用 Handler 将更改发布到 UI 线程或切换到使用 AsyncTask

    所以你已经在使用AsyncTask,所以你应该在onProgressUpdate() 的AsyncTask 中使用ProgressBar.setProgress()。覆盖此方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-01
      • 1970-01-01
      • 2018-01-13
      • 2011-07-12
      • 1970-01-01
      • 2021-06-08
      • 2017-06-01
      相关资源
      最近更新 更多