更改线程中的布局背景

时间:2016-09-10 19:13:24

标签: android multithreading runnable

我想更改我在另一个类中使用的线程的背景颜色。但不幸的是,#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"));

                }
}

3 个答案:

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