我在使用Android版本4.0.4时,使用了setBackground方法,程序崩溃.

提示:Caused by: java.lang.NoSuchMethodError: android.widget.ImageView.setBackground


经所有资料,和Android的系统版本有关系。

经查找大于等于API16的源码

首先看一下setBackgroundDrawable


提示此方法已经过时,已经被setBackground方法替代


下面看一下setBackground方法



在小于API16的源码中,只找到了setBackgroundDrawable方法,没有找到setBackground方法



从而得到

(1)在API16之后,Android系统由setBackground方法替代了setBackgroundDrawable方法,但是经查看源码,setBackground方法中是直接调用了setBackgroundDrawable方法,所以API16之后既可以使用setBackground,也可以使用setBackgroundDrawable,但是使用setBackgroundDrawable提示过时。

(2)在API之前,Android值提供了setBackgroundDrawable方法。

所以我们在程序中可以进行判断


/**     * 在API16以前使用setBackgroundDrawable,在API16以后使用setBackground     * API16<---->4.1     * @param view     * @param drawable     */    private void setBackgroundOfVersion(View view, Drawable drawable) {        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {            //Android系统大于等于API16,使用setBackground            view.setBackground(drawable);        } else {            //Android系统小于API16,使用setBackground            view.setBackgroundDrawable(drawable);        }    }



更多相关文章

  1. Android(安卓)NDK 编译、使用动态库
  2. 使用Repo在Windows平台下載Android原始碼
  3. android 项目中规范使用SharedPreferences
  4. Android开发之InstanceState详解
  5. 浅谈Java中Collections.sort对List排序的两种方法
  6. 箭头函数的基础使用
  7. NPM 和webpack 的基础使用
  8. Python list sort方法的具体使用
  9. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程

随机推荐

  1. xml学习(8) xml增删改查
  2. XML Sitemap 相关问题
  3. xml学习(7) .net 获取xml节点或者属性最大
  4. XML文件导入EXCEL
  5. XML—XPATH语法介绍
  6. xml学习(6) 在c#Xpath实例
  7. xml学习(5)xml配置gridview列
  8. XML—XML解析之DOM4J
  9. XML标记的语义
  10. xml学习(4) 创建xml 文件