配置

在Android Studio项目中配置使用ButterKnife
本文介绍使用的as版本为3.6.1,ButterKnife版本为10.0.0

1.首先在app的build.gradle文件中 dependencies里面添加

dependencies {
  //添加butterKnife的依赖
  implementation 'com.jakewharton:butterknife:10.0.0'
  annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
}

2. 在app的build.gralde文件中,在android下指定jdk的版本。

   //指定jdk的版本
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

3.通过as下载Android ButterKnife Zelezny插件

File-->setting-->plugins  (这里我遇到过一直加载不出来,网络特别慢的情况,我就尝试了好几次,然后进来没有在输入框输入这个插件,一直等插件列表加载完,挑选自己需要的插件安装的。不成功的情况可以多试试几次,或者可以尝试找梯子。我的就是试了好几次成功的)  安装成功后,重启android studio

尝试几次还是安装不行可参考文件https://blog.csdn.net/wwq614003946wwq/article/details/80625971

 

4.代码中如何使用,举例。MainActivity 中的布局文件。

在Activity的onCreate方法中。setContentView(R.layout.activity_main); 鼠标放在放在R.layout.activity_main布局文件的位置

右键layout->点击Generate->Generate ButterKnife Injections就可以了。会自动绑定控件id,自动加了ButterKnife.bind(this);activity与布局文件建立了绑定。

一般ButterKnife.bind()得到的UnBinder对象。平常写法都是拿到这个对象,全局定义一下,然后在onDestory方法中进行解绑。代码如下。

  private Unbinder unbinder;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        unbinder = ButterKnife.bind(this);
    }

    @Override
    protected void onDestroy() {
        unbinder.unbind();
        super.onDestroy();
    }
}

fragment依旧如此。 fragment进行绑定的代码是

ButterKnife.bind(this, contactsLayout);
 private Unbinder mUnbinder;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        context = getActivity();
        View contactsLayout = inflater.inflate(
                R.layout.fragment_maintab4_layout, container, false);
        mUnbinder = ButterKnife.bind(this, contactsLayout);
        initView(contactsLayout);
}

总结:

*** 上面的步骤一添加依赖的时候

最好用10.0.0版本。我之前用的是8.8.1版本的,然后当安装了Android ButterKnife Zelezny插件后就报错。

The given artifact contains a string literal with a package reference 'android.support.v4.content' that cannot be safely rewritten. Libraries using reflection such as annotation processors need to be updated manually to add support for androidx.

*** 报错信息。Static interface methods are only supported starting with Android N (--min-api 24): void butterknife.Unbinder.lambda$static$0()

这个错误就是需要添加jdk的依赖。就需要做上面的步骤二,

 

 

 

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐