使用 ProgressBar.setProgress(int) 时出现问题

发布于 2024-11-30 02:07:13 字数 151 浏览 0 评论 0原文

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

有什么解决办法吗? :/

08-18 11:24:09.503: ERROR/AndroidRuntime(22649): Caused by: android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.

Is there any solution? :/

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

旧伤还要旧人安 2024-12-07 02:07:13

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

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

Yes.
You can't touch UI in non-UI threads, so the solution is to run the problematic code inside a runOnUiThread:

runOnUiThread(new Runnable() {
    public void run() {
        //your problematic code
    }
});
何必那么矫情 2024-12-07 02:07:13

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

因此您正在使用 AsyncTask已经,所以您应该将 ProgressBar.setProgress() 放在 AsyncTaskonProgressUpdate() 中。重写此方法

Only the UI thread can manipulate with views and stuffs. If you are working in another thread, try using Handler to post change to view to UI thread or switch to use AsyncTask

So you are using AsyncTask already, so you should ProgressBar.setProgress() inside onProgressUpdate() of AsyncTask. Override this method

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文