今天学习了一下黄油刀的相关,出现了几个问题在这里记录一下。
1.在我按照github上的配置来导入相关包的时候出现了以下的报错信息
添加依赖过程:
在项目的project 的build.gredle 文件中的dependencies标签下添加。
classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.1' //Butterknife
在App的 build.gradle 中添加如下代码:
apply plugin: 'com.jakewharton.butterknife'
最后在dependencies中添加:
compile 'com.jakewharton:butterknife:8.4.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.1'
仔细看下是正常的导包过程,按照这个过程走完后我就出现了最开始那个截图上的错误。。。
原因主要是因为library库上导包时有这个问题的出现,这也主要是组件化开发才会出现的情况。因为一般我们只需要直接进行第三步添加依赖就可以导入所需的黄油刀依赖(不需要组件化开发直接进入第三步)。
对于组件化开发,需要多个library库和module等相关操作,由于没有组件化项目进行实际的测试,我在删除了第二步所添加的插件之后成功导入了黄油刀,因此第二步应该是在library中进行添加(推测)。而且黄油刀的版本也会影响导包问题。在这个博客中对于导包的过程有仔细分析
https://blog.csdn.net/zyw0101/article/details/80399225
2.黄油刀的绑定
黄油刀在多个activity使用时每个活动中都要加入Butterknife.bind(this),这部分其实也可以统一化
由于每次都要在Activity中的onCreate绑定Activity,所以个人建议写一个BaseActivity完成绑定,子类继承即可
注:ButterKnife.bind(this);绑定Activity 必须在setContentView之后:
public abstract class BaseActivity extends Activity {
public abstract int getContentViewId();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getContentViewId());
ButterKnife.bind(this);
initAllMembersView(savedInstanceState);
}
protected abstract void initAllMembersView(Bundle savedInstanceState);
@Override
protected void onDestroy() {
super.onDestroy();
ButterKnife.unbind(this);//解除绑定,官方文档只对fragment做了解绑
}
}
至于一些基础的黄油刀怎么用相关的部分本篇不做介绍,网络上相关内容比较多。