我想改变我在另一个类中使用的线程的背景颜色。但不幸的是,"只有创建视图层次结构的原始线程才能触摸它的视图",我得到一个错误。
如果你能帮忙我将很高兴。
private class thread implements Runnable{
@Override
public void run() {
while (!change_background) {
background.setBackgroundColor(Color.parseColor("#ffffff"));
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
background.setBackgroundColor(Color.parseColor("#000000"));
}
}
是的,这是正确的,只有主ui可以触摸它的视图。但是有一个很好的解决方法。即使你在另一个线程上,你也可以使用runonuthread调用主线程。
runOnUiThread(new Runnable() {
@Override
public void run() {
//write UI related code in here
background.setBackgroundColor(Color.parseColor("#000000"));
}
});
使用线程或使用处理程序调用上面的void。
runOnUiThread
使用runonuthread更改背景
((Activity)context).runOnUiThread(new Runnable() {
public void run() {
// things need to work on ui thread
}
});