Butterknife的使用以及一些莫名其妙的错误解答

Butterknife 快速集成与使用步骤 
注解中相对简单易懂的很不错的开源框架 
1. 强大的View绑定和Click事件处理功能,简化代码,提升开发效率 
2. 方便的处理Adaper里的ViewHolder绑定问题 
3. 运行时不会影响app效率,使用配置方便 
4. 代码清晰,可读性强

 
 

ButterKnife大大简化了程序员编写代码的速度,.并且在7.0版本以后引入了注解处理器,取代了之前利用反射原理进行findViewById影响APP性能的方式,不再影响APP运行效率,下面直接上图. 

 
 

1、集成库;
在build.gradle里面添加这句:
classpath 'com.jakewharton:butterknife-gradle-plugin:8.5.1'
2.在项目的build.gradle 添加 :
compile 'com.jakewharton:butterknife:8.5.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'

apply plugin: 'com.jakewharton.butterknife'
示意图:
 
 
 
 3、run一下: 
 
可能会出现天杀的错误,不怕,赶紧百度一番,
Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl.class

前辈们给出解答:说是V4包重复了,于是你按照前辈的指引七搞八搞 ,
但是还没解决这个错误的话,
可能是这个原因:没有V4包
添加这一句试试看吧 :)
compile 'com.android.support:support-v4:25.1.1'
 
 3  
 使用须知 
 
 
 
 
 
 
 

1.Activity中使用ButterKnife.bind(this);必须在setContentView();之后,父类中bind后,子类不需要再bind

2.Fragment中使用ButterKnife.bind(this, rootView); 根布局View对象,需要在onDestroyView中解绑

3.注解的属性不能用private或static修饰,否则会报错

4.Activity官方例子中没有解绑操作,而Fragment需要解绑

在Fragment中需要解绑

在fragment中使用(需要解绑) private Unbinder unbinder; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,                          Bundle savedInstanceState) {     

View view = inflater.inflate(R.layout.fragment_regist_create,container,false);     unbinder = ButterKnife.bind(this, view);//需要加多一个加载了布局的View对象     return view; } @Override public void onDestroyView() {     super.onDestroyView();     unbinder.unbind();//fragment需要解绑

}

 
 

可以再偷懒一点

Android Studio插件:Android Butterknife Zelezny

方便给整个布局文件一键生成注解。

使用方法:

    在setContentView(R.layout.activity_main)中对着activity_main右键,

generate ----> Generate ButterKnife Injections,勾选需要生成注解的控件即可

技术分享

猜你喜欢

转载自blog.csdn.net/qq_34927117/article/details/71436711