使用ButterKnife 在开发中需要注意的地方

使用ButterKnife 在开发中需要注意的地方

1.Gradle 配置

implementation 'com.jakewharton:butterknife:10.1.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'

使用ButterKnife 在开发中需要注意的地方

Java8才支持静态接口方法的原因,可以通过在app的build.gradle文件中配置使用Java8的编译

compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
}

2.绑定

  • Activity 中使用,一定要在setContentView()之后再写 ButterKnife.bind(this);
  • Fragment 中使用
View view= (ViewGroup) LayoutInflater.from(getActivity()).inflate(R.layout.test, null);
ButterKnife.bind(this, view);
  • 自定义view中,与fragment相似
View view= LayoutInflater.from(getContext()).inflate(R.layout.test, this);
ButterKnife.bind(this,view);

3.报错,备注解的属性和方法不能为私有的和静态的

@BindView(R.id.ivBookCover)
    ImageView mIvBookCover;
    @BindView(R.id.tvBookListTitle)
    TextView mTvBookTitle;

4.解绑

public class BaseFragment extends Fragment {
    public static final String TAG = "BaseFragment";
    protected Unbinder mUnbinder;

    @Override
    public void onDestroyView() {
        if (this.mUnbinder != null) {
            this.mUnbinder.unbind();
        }
        super.onDestroyView();
    }
}

5.特别注意

在异步请求中,尤其是网络请求,一般异步回来网络结果时,我们需要更新UI,这个时候,如果界面已经调用了onDestroy()或者onDestroyView(),相当于页面已经销毁,调用了unbind()方法了,如果我们还有更新UI的话,就会报空指针异常。所以必须在异步回调里,来判断是否已经解绑,如果已经调用解绑了,那就不能再执行相关操作了。
方法是在unbind()之后将mUnbinder=null;
在异步回调时,首先判断mUnbinder==null,则return;

 

Maven中央仓库信息速查

书到用时方恨少,纸上得来终觉浅。共勉。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/114991.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ideaIU-2022.01 激活码【最新永久激活】

    (ideaIU-2022.01 激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~0H…

    2022年3月31日
    768
  • 解决vue+element 时间控件时间差,区域时差8小时

    解决vue+element 时间控件时间差,区域时差8小时后入前的小白,百思不得其解好久,各种百度。这位小姐姐总结的三种都试了不行,需要的小伙伴可以一起试试~https://blog.csdn.net/molihuakai_118/article/details/94359373然后用moment试了moment(values.beginTime)这种也不行,大佬指导和北京时间差8小时,下面这样写就OK了~~传值的时候用哦~…

    2022年5月10日
    209
  • spring storedProcedure 使用

    spring storedProcedure 使用http://blog.csdn.net/xiao_jun_0820/article/details/7268219 StoredProcedure是一个抽象类,必须写一个子类来继承它,这个类是用来简化JDBCTemplate执行存储过程操作的。首先我们写一个实现类:[java]viewplaincopyprint?package com.huaye.f

    2022年7月26日
    9
  • 最小二乘法正规方程推导过程

    最小二乘法正规方程推导过程最小二乘法正规方程推导过程线性回归岭回归:添加L2L_2L2​正则项输入样本X∈Rm×n\textbf{X}\in\mathbb{R}^{m\timesn}X∈Rm×n,输出y∈Rm×1\textbf{y}\in\mathbb{R}^{m\times1}y∈Rm×1,需要学习的参数w∈Rn×1\textbf{w}\in\mathbb{R}^{n\times1}w∈Rn×1。其中,mmm为样本个数,nnn为单个样本维度。线性回归最小化目标函数J(w)=12∥y−Xw∥22J(\

    2022年5月16日
    45
  • JVM(四)—一道面试题搞懂JVM类加载机制

    JVM(四)—一道面试题搞懂JVM类加载机制有这样一道面试题:classSingleton{privatestaticSingletonsingleton=newSingleton();publicstaticintvalue1;publicstaticintvalue2=0;privateSingleton(){value1++;…

    2022年5月24日
    34
  • 004 JVM调优工具_arthas(阿尔萨斯)

    004 JVM调优工具_arthas(阿尔萨斯)https://alibaba.github.io/arthas/Arthas是Alibaba开源的Java诊断工具,其安装应用非常简单,功能非常强大;1.安装:推荐使用arthas-boot下载arthas-boot.jar:curl-Ohttps://alibaba.github.io/arthas/arthas-boot.jarjava-jararthas-bo…

    2022年5月29日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号