2014-09-01 47 views
0

我想爲按鈕設置背景。隨着Android 4.1.2一切工作正常,但如果與Android 4.0推出我有一個錯誤Android button.setBackground

java.lang.NoSuchMethodError: android.widget.Button.setBackground 

與代碼

LayerDrawable composite = new LayerDrawable(layers); 
button.setBackground(composite); 

所以,我怎麼能設置LayerDrawable背景但Android 4.0或更早?

+2

http://stackoverflow.com/questions/18559248/button-setbackgrounddrawable-background-throws-nosuchmethoderror – eleven 2014-09-01 18:37:40

+0

創建xml圖層並將其設置爲您的按鈕\t \t button.setBackgroundDrawable(getResources()。getDrawable(R.drawable.layer)); (setBackground進來api級別16) – MHP 2014-09-01 18:52:43

回答

2

雖然上述兩個答案都是接近你真的應該使用

Build.VERSION.SDK_INT 

爲Build.VERSION.SDK返回一個字符串,並一直deprecated since API 4

if(Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN){ 
     LayerDrawable composite = new LayerDrawable(layers); 
     button.setBackgroundDrawable(composite); 
}else{ 
     LayerDrawable composite = new LayerDrawable(layers); 
     button.setBackground(composite); 
} 
0

嘗試......

if(Build.VERSION.SDK < Build.VERSION_CODES.ICE_CREAM_SANDWICH){ 
    LayerDrawable composite = new LayerDrawable(layers); 
    button.setBackgroundDrawable(composite); 
}else{ 
    LayerDrawable composite = new LayerDrawable(layers); 
    button.setBackground(composite); 
} 

的setBackground繪製作爲參數接收(可繪製背景)...

我希望helpp你...

0

setBackground方法僅適用於API等級16或以上。您可能正在使用低於16的API級別的方法,這就是爲什麼它投擲NoSuchMethodError。對於較低的API版本,您可能想嘗試setBackgroundDrawable。像這樣的東西會做:

if(Build.VERSION.SDK < Build.VERSION_CODES.JELLY_BEAN){ 
    LayerDrawable composite = new LayerDrawable(layers); 
    button.setBackgroundDrawable(composite); 
}else{ 
    LayerDrawable composite = new LayerDrawable(layers); 
    button.setBackground(composite); 
} 
+0

是的,它的工作!謝謝) – 2014-09-01 18:56:38

+0

@DenisKotenko很高興知道!不要忘了標記這個答案是正確的:) – 2014-09-01 18:58:06