2016-09-10 29 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 
    } 
});