码迷,mamicode.com
首页 > 其他好文 > 详细

"Only the original thread that created a view hierarchy can touch its views."解决

时间:2014-10-29 18:51:44      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:android   blog   ar   java   sp   div   on   log   bs   

  Android系统中的视图组件并不是线程安全的,如果要更新视图,必须在主线程中更新,不可以在子线程中执行更新的操作。所以可以依靠消息机制来进行更新。

  先声明一个handler来处理消息

 private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
                setContentView(child);
        }
    };

  然后在视图中触发的事件的方法中发送消息到handler来触发更新视图

        b2 = (Button) findViewById(R.id.return_button);
        b2.setOnClickListener(new Button.OnClickListener() {
            public void onClick(View v) {
                setWebView();
            }
        });    

  

    private void setWebView() {
        Message msg = new Message();
        msg.what = CHANGE_WEB;
        handler.sendMessage(msg);

    }

  这样子就可以实现在其他线程中操作主视图。

 

"Only the original thread that created a view hierarchy can touch its views."解决

标签:android   blog   ar   java   sp   div   on   log   bs   

原文地址:http://www.cnblogs.com/pkpokemon/p/4059855.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!