使用 ProgressBar.setProgress(int) 时出现问题
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的。
您无法在非 UI 线程中触及 UI,因此解决方案是在
runOnUiThread
中运行有问题的代码:Yes.
You can't touch UI in non-UI threads, so the solution is to run the problematic code inside a
runOnUiThread
:只有 UI 线程可以操作视图和内容。如果您正在另一个线程中工作,请尝试使用
Handler
将视图更改发布到 UI 线程或切换到使用AsyncTask
因此您正在使用
AsyncTask
已经,所以您应该将ProgressBar.setProgress()
放在AsyncTask
的onProgressUpdate()
中。重写此方法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 useAsyncTask
So you are using
AsyncTask
already, so you shouldProgressBar.setProgress()
insideonProgressUpdate()
ofAsyncTask
. Override this method