//首先 我在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即可。