ButterKnife在androidStudio 2.3~2.4之后的bug以及解决思路

这里写图片描述

//首先  我在androidstudio2.3 构建的项目  
compile 'com.jakewharton:butterknife:7.0.1'

我一直在用这个 然而到将项目克隆到AS2.4后却发生如下错误:!
这个错误大概是说2.4以后必须声明该引用,简单的说7.0.1的时代已经过去了
//解决方法1:
到goole官方网站查看如下
https://developer.android.com/studio/preview/features/index.html?utm_source=android-studio#annotationProcessor_config
尝试添加

  javaCompileOptions {
     annotationProcessorOptions {
          includeCompileClasspath false
      }
  }

结果任然报错(无效)

//解决方法2:(解决问题 但也导致我的代码需要重构······)
在app->build gradle中添加依赖

compile 'com.jakewharton:butterknife:8.4.0'  
annotationProcessor'com.jakewharton:butterknifecompiler:8.4.0'

在整个项目->build gradle中添加依赖

 dependencies {
    classpath 'com.android.tools.build:gradle:2.2.3'
    classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.0'
}
//其次问题二
//有种特殊的情况 :  当Activity 和Dailog 共存时。
//1. 共享点击事件的问题
//2. ButterKnife版本迁移造成的控件找不到的问题

//1 解决方法
 ButterKnife.findById(myAlertDialog, R.id.order_check_bt).setOnClickListener(this);
    @Optional
    @OnClick({R.id.substitute_driving_bt, R.id.order_check_bt})
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.substitute_driving_bt:
                jump();
                break;
            case R.id.order_check_bt:
                getActivity().startActivity(new Intent(getActivity(), DetailActivity.class));
                break;
        }
    }
//这样就能够共享一个OnClick事件。
//注意:@Optional 或者 @Nullabl必须加上不然初始化会因为找不到Dilog上的order_check_bt 崩溃
//2 解决方法  ButterKnife 改成8.0.1后 不仅注解改变了 而且绑定方式也有所改变  
// 这里主要是发生了和问题一样的问题  解决:将@Nullabl 全部改成@Optional即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值