经历了无数深坑,网上的帖子都是8.0.0+,尝试了各种方案无果,最后看到大佬的帖子才配置成功,特此记录。
可以直接移步原贴,也可以看下去,????原贴地址
一、配置
首先说一下我的android studio和gradle版本:
android studio 3.4
gradle版本 3.4.1
主要做了以下配置
在App的build.gradle中的dependencies中添加下面两行:
implementation 'com.jakewharton:butterknife:9.0.0-SNAPSHOT'
annotationProcessor 'com.jakewharton:butterknife-compiler:9.0.0-SNAPSHOT'
在Module的build.gradle中的buildscript以及allprojects中添加
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
然后Sync now就完成配置了,直接把两个build.gradle贴出来,可以参考
apply plugin: 'com.android.application'
//apply plugin: 'com.android.library'
//apply plugin: 'com.jakewharton.butterknife'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.example.hello"
minSdkVersion 28
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.android.support:gridlayout-v7:28.0.0'
/*implementation 'com.jakewharton:butterknife:9.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:9.0.0'*/
//noinspection GradleDependency
implementation 'com.jakewharton:butterknife:9.0.0-SNAPSHOT'
//noinspection GradleDependency
annotationProcessor 'com.jakewharton:butterknife-compiler:9.0.0-SNAPSHOT'
}
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.1'
classpath 'com.jakewharton:butterknife-gradle-plugin:9.0.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
二、测试
在一个页面中加一个button2,通过@BindView来绑定一个button,然后设置它的点击事件,可以不用写成匿名内部类的形式,直接使用@OnClick绑定点击事件函数即可,下面实现的就是点击一个按钮,弹出消息框,提示“点击事件绑定成功”。
public class AnotherActivity extends Activity {
@BindView(R.id.button2) Button btn2; //绑定button2
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_another);
ButterKnife.bind(this);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
@OnClick(R.id.button2) //button2的点击事件
public void onBtn2Click(){
Toast.makeText(AnotherActivity.this, "点击事件绑定成功", Toast.LENGTH_SHORT).show();
}
}