2012-06-28 77 views
1
06-28 12:07:10.881: E/(930): {total=21 secs, date2=28-06-2012, time2=9:43:09 AM, time1=9:42:48 AM, date1=28-06-2012} 
06-28 12:07:11.131: E/testing(930): exception:android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. 
06-28 12:07:11.160: E/(930): {total=24 secs, date2=28-06-2012, time2=10:45:02 AM, time1=10:44:38 AM, date1=28-06-2012} 
06-28 12:07:11.601: E/testing(930): exception:java.lang.IllegalArgumentException: The observer is null. 
+0

你正试图从非UI线程更新UI元素... –

+0

确保你不是从一个新线程或AsyncTask调用它..看到这个http://stackoverflow.com/questions/5185015/updating- android-ui-using-threads – ngesh

回答

2
  • .ViewRoot $ CalledFromWrongThreadException explan此异常:只有原来的线程 创建视图层次可以触摸其观点

看起来你要更新UI元素来自非UI线程。

应该使用的活动HandlerrunOuUIThread功能或Asynctask根据自己的需要

+0

嗨Dheeresh,我们也可以,我们HandlerThread! :) –

+0

嗨伊姆兰...是的,我们可以..... –

+0

请提供一些示例代码 – raju

0

您正试图修改一个线程不是UI线程UI组件。查看runOnUiThread以从非UI线程更新UI组件。

1

查看在单独的线程中编写的代码,它正在尝试更新您的应用程序UI。

您需要将该代码放在runOnUiThread的运行方法中。

runOnUiThread(new Runnable() { 
    public void run() { 
      // COde to update UI. 
    } 
}); 
0

可以使用线程,但各方面的意见,以及所有相关的API,必须从主线程调用的视图(也称为UI线程)。为了从后台线程做到这一点,你需要使用Handler。 A 处理程序是一个将消息发送回UI线程的对象。