从第二个线程更新UI时出现问题,第一个线程正常工作

时间:2010-11-27 02:26:41

标签: android

我有一个程序,我要访问一个网站,抓取XML并解析,非常简单。

这里的代码运行得很好,它是在onCreate方法

中启动的
final Handler handler = new Handler(){

 public void handleMessage(Message msg){
        progDialog.dismiss();
        parse(xmlOut);           
  }};

progDialog = ProgressDialog.show(this, "Working...", "Doing something..."); thread = new Thread() {

 public void run(){

xmlOut = doSomeFunction(todaysDate);
handler.sendEmptyMessage(0);

 }};

thread.start();

然后我在页面上有一个按钮,如果用户选择不同的日期重新加载数据,无法重新运行相同的线程,所以我只是复制了完全相同的代码,更改了所有变量名称并将其放入int用于Button的OnClickListener。

当我点击按钮时,我得到一个例外并获得此

android.view.ViewRoot $ CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能触及其视图。

做错了什么但不确定究竟是什么。我不会写太多线程程序,所以我确信我错过了一些东西。

1 个答案:

答案 0 :(得分:0)

所有UI更改都应该从该线程中的相同线程或处理程序或AsyncTask完成。 Check this post阅读一些关于android中的AsyncTasks的内容。

我猜你没有正确执行Button声明,或者你是从另一个线程设置事件。这会给你这个错误。如果你仍然被击中,那么在这里发布相关代码,我可以尝试更好地帮助你。