开发中遇到的一些版本兼容问题-setBackground

之前在修改某支付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); 
}

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值