如何从线程中删除背景

时间:2014-04-03 19:43:15

标签: android layout timer timertask

我正在使用Timer定期检查一个条件,如果发现真实条件则想要删除背景。但它给了我一个错误。

 android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.

我的代码是:

t.schedule(new TimerTask(){

            @Override
            public void run() {

                if(!active){
                    fl.setBackgroundResource(android.R.color.transparent);// this line causing error !

                }


            }}, 500,500);

2 个答案:

答案 0 :(得分:0)

您好至少可以使用两种方法:

<强> 1。 runOnUIThread Activity的方法

runOnUiThread(new Runnable(){
     public void run() {
          // UI code goes here
     }
});

<强> 2。处理

Handler handler = new Handler(Looper.getMainLooper());
handler.post(new Runnable() {
     public void run() {
          // UI code goes here
     }
});

答案 1 :(得分:0)

使用handler来触摸主线程中的视图:

Handler mHandler = new Handler();

t.schedule(new TimerTask(){

mHandler.post(new TimerTask(){

        @Override
        public void run() {

            if(!active){
                fl.setBackgroundResource(android.R.color.transparent);// this line causing error !

            }
        }
        });
        }, 500,500);