改变线程的布局背景



我想改变我在另一个类中使用的线程的背景颜色。但不幸的是,"只有创建视图层次结构的原始线程才能触摸它的视图",我得到一个错误。

如果你能帮忙我将很高兴。

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
    }
});

最新更新