之前在修改某支付sdk的时候需要用到自定义的对话框,其中用到了setBackground这个方法,由于一开始项目的minSdkVersion高,没有提示,直到到某部手机上运行时出现了下面这个错误:
java.lang.NoSuchMethodError: android.view.View.setBackground
才发现,低版本的sdk没有这个方法,直接使用setBackgroundDrawable代替。
其实setBackground也是调用了setBackgroundDrawable:
/**
* Set the background to a given Drawable, or remove the background. If the
* background has padding, this View's padding is set to the background's
* padding. However, when a background is removed, this View's padding isn't
* touched. If setting the padding is desired, please use
* {@link #setPadding(int, int, int, int)}.
*
* @param background The Drawable to use as the background, or null to remove the
* background
*/
public void setBackground(Drawable background) {
//noinspection deprecation
setBackgroundDrawable(background);
}
如果不想直接使用setBackgroundDrawable,那么可以加个判断:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
XXXXXX.setBackground(null);
} else {
XXXXXX.setBackgroundDrawable(null);
}