How to remove background from thread

2019-08-24 03:34发布

I am using Timer to check a condition periodically and want to remove background if found true condition. But it is giving me an error.

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

My code is :

t.schedule(new TimerTask(){

            @Override
            public void run() {

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

                }


            }}, 500,500);

2条回答
相关推荐>>
2楼-- · 2019-08-24 04:17

Use handler to touch views in main thread like that:

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);
查看更多
Emotional °昔
3楼-- · 2019-08-24 04:18

Hi you can use at least two methods to do that:

1. runOnUIThread Activity's method

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

2. Handler

Handler handler = new Handler(Looper.getMainLooper());
handler.post(new Runnable() {
     public void run() {
          // UI code goes here
     }
});
查看更多
登录 后发表回答