我正在使用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);
答案 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);