更改线程中的布局背景
Change Layout Background in Thread
我想更改我在另一个 class 中使用的线程的背景颜色。但不幸的是 "only the original thread that created a view hierarchy can touch its views" 我得到一个错误。
如果你能帮上忙,我会很高兴。
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线程中调用以上代码或使用处理程序。
runOnUiThread
是的,这是正确的,只有 main ui 可以触摸它的视图。但是有一个很好的解决方法。即使您在另一个线程上,您也可以使用 runOnUiThread.
调用主线程
runOnUiThread(new Runnable() {
@Override
public void run() {
//write UI related code in here
background.setBackgroundColor(Color.parseColor("#000000"));
}
});
使用 runOnUiThread 更改背景。
((Activity)context).runOnUiThread(new Runnable() {
public void run() {
// things need to work on ui thread
}
});
我想更改我在另一个 class 中使用的线程的背景颜色。但不幸的是 "only the original thread that created a view hierarchy can touch its views" 我得到一个错误。
如果你能帮上忙,我会很高兴。
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线程中调用以上代码或使用处理程序。
runOnUiThread
是的,这是正确的,只有 main ui 可以触摸它的视图。但是有一个很好的解决方法。即使您在另一个线程上,您也可以使用 runOnUiThread.
调用主线程runOnUiThread(new Runnable() {
@Override
public void run() {
//write UI related code in here
background.setBackgroundColor(Color.parseColor("#000000"));
}
});
使用 runOnUiThread 更改背景。
((Activity)context).runOnUiThread(new Runnable() {
public void run() {
// things need to work on ui thread
}
});