视线中的Android更改取决于线程结束

时间:2011-05-27 11:51:46

标签: android multithreading view

我在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();

2 个答案:

答案 0 :(得分:1)

您应该使用AsyncTask http://developer.android.com/reference/android/os/AsyncTask.html而不是Thread,并在onPostExecute()中执行loader.setVisibility(View.INVISIBLE)

答案 1 :(得分:1)

在Android中,只有原始UI-Thread可以对其视图进行更改。这是安全政策。您可能感兴趣的解决方案也显示在this older thread

另请参阅Android的Handler - 类(在上面的线程中使用)。

但是(如zerpage所述),AsyncTask可能是更好的方法。