更改线程中的布局背景

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