如何解决Android根据线程结束而改变视图
我在onCreate()
中创建了一个线程。运行正常。现在,我想在线程结束时更改视图中的某些内容。但是,如果将其添加到run()
方法中,则会产生android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
错误。如何解决这个问题呢?
Thread updateThread = new Thread() {
@Override
public void run() {
................
................
//this line is giving problem
loader.setVisibility(View.INVISIBLE);
}
};
updateThread.start();
解决方法
您应该使用AsyncTask http://developer.android.com/reference/android/os/AsyncTask.html而不是Thread,并在onPostExecute()中执行loader.setVisibility(View.INVISIBLE)
, 在Android中,只有原始的UI-Thread才能对其视图进行更改。那是安全政策。这个较早的主题中也显示了一个您可能感兴趣的解决方案。
还可以查看Android的Handler-class(在上面的线程中使用)。
但是(如zerpage所述),AsyncTask可能是更好的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。