2016-09-10 114 views
-1

我想更改我在另一个类中使用的线程的背景颜色。但不幸的是“只有创建视图层次结构的原始线程才能触及其视图”,我得到一个错误。更改线程中的布局背景

我会很高兴,如果你能帮助。

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

       } 
} 

回答

2

是啊,这是正确的,只有主界面可以触摸其观点。但是有一个很好的解决方法。即使你在另一个线程上,你也可以使用runOnUiThread来调用主线程。

runOnUiThread(new Runnable() { 
    @Override 
    public void run() { 
     //write UI related code in here 
     background.setBackgroundColor(Color.parseColor("#000000")); 
    } 
}); 
1

在uithread上面调用vode或使用处理函数。

runOnUiThread

1

使用runOnUiThread更改背景。

((Activity)context).runOnUiThread(new Runnable() { 
    public void run() { 
     // things need to work on ui thread 
    } 
});