我想更改我在另一个类中使用的线程的背景颜色。但不幸的是,#34;只有创建视图层次结构的原始线程才能触及其视图。我收到了错误。
如果你能提供帮助,我会很高兴。
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"));
}
}
答案 0 :(得分:2)
是的,只有主要的ui才能触及它的观点。但是有一个很好的解决方法。即使您在另一个线程上,也可以使用runOnUiThread调用主线程。
runOnUiThread(new Runnable() {
@Override
public void run() {
//write UI related code in here
background.setBackgroundColor(Color.parseColor("#000000"));
}
});
答案 1 :(得分:1)
在uithread上调用vode或使用处理程序。
runOnUiThread
答案 2 :(得分:1)
使用runOnUiThread更改背景。
((Activity)context).runOnUiThread(new Runnable() {
public void run() {
// things need to work on ui thread
}
});