控件版本问题 ----填坑

控件版本不一致 的坑—-解决思路

今天做项目的时候发现 FloatingActionButton 有问题,如果不用该控件则没有问题,如果使用
android.support.design.widget.FloatingActionButton 则报错

错误为:

   Caused by: java.lang.NoSuchMethodError: No direct method <init>(Landroid/widget/ImageView;Landroid/support/v7/widget/AppCompatDrawableManager;)V in class Landroid/support/v7/widget/AppCompatImageHelper; or its super classes (declaration of 'android.support.v7.widget.AppCompatImageHelper' appears in /data/data/com.fnfh.quanmingzhibo/files/instant-run/dex/slice-com.android.support-appcompat-v7-25.0.0_ff37a3640c2a69bc7d07a3f6d4bea1513297dc43-classes.dex)
                      at android.support.design.widget.FloatingActionButton.<init>(FloatingActionButton.java:133)
                      at android.support.design.widget.FloatingActionButton.<init>(FloatingActionButton.java:110)

问题查找:

  1. 确认为 FloatingActionButton 的问题,注释 FloatingActionButton 的相关代码 ,看是否 还是报同样的错;
  2. 错误类型为 error ,可能为 编译器 出现问题;excption 可能为 代码出现问题
  3. 点击报错内容 可以 看到 FloatingActionButton 的 构造参数发生错误
  4. 可能原因就是版本问题
  5. 对于本身的版本 发现没有问题,可以查看 External Libraries ,发现有
    25.0.0 的版本,而正常导入的是 23.4.0 的版本。
  6. android 本身会调用 最高版本的 控件
  7. 什么原因造成其 为 25.0.0 的design 版本呢?

    可能原因是 项目中使用的其他控件有 高版本的,会使用 高版本 design.
    
  8. 处理方式:

    一 将所有内容 提升到 25.0.0 版本
    
    二 将控件降到 23.4.0 版本
    

当然 第一种方式容易实现

猜你喜欢

转载自blog.csdn.net/hyl411136528/article/details/54139778