使用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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mysql 长连接

    mysql 长连接

    2021年9月6日
    60
  • pycharm实现基于mysql关键词检索问题

    pycharm实现基于mysql关键词检索问题       后端是使用pycharm写的       单个关键词的检索实现如下:defadProQuery(): content=request.form.get(‘ad_proSearch’)#需要查询的内容ifcontentisNone:content=””pros=Cy_regist.query.f

    2022年8月27日
    3
  • MFC控件 — 进度条【案例】「建议收藏」

    MFC控件 — 进度条【案例】「建议收藏」打开游戏或者其他一些软件时,时常会看到刚开始时有一个进度条在加载,有点酷炫的感觉。对于MFC进度条的使用,下面用一个案例介绍一下。案例:进度条单步加载和自动连续加载步骤:1.按下图在对话框中添加一个进度条,一个编辑框,和3个按钮,并为进度条添加一个控件变量进度条变量:m_Progress2.在初始化函数中对进度条进行初始化,代码如下:BOOLCSpinDlg::OnInitDia…

    2022年7月16日
    19
  • jquery仿搜狐投票动画代码

    体验效果:http://hovertree.com/texiao/jquery/21/这是一款基于jquery实现的仿搜狐投票动画特效源码,运行该源码可见VS图标首先出现在中间位置,紧接着随着投票比例

    2021年12月21日
    40
  • 完全干净卸载mysql教程

    完全干净卸载mysql教程引言很多人因为第一次安装mysql导致安装错误,或者安装的数据库版本太高,比如mysql8.0版本,出现了很多问题,导致数据库无法使用,或者一些图形界面无法操作,想要卸载,重装稳定的mysql数据库,却是一件麻烦的事情,接下来教大家如何卸载有问题的mysq版本不限l,希望帮到大家,分为五步!个人微信公众号:源码客栈感兴趣可以关注下,更多视频资料教程!第一步卸载Mysql相关的应用程序打开控制面板-》找到程序和功能,看到所有和mysql相关的应用程序,右击卸载掉,有些人可能有workbench

    2022年6月16日
    34
  • 基于matlab的机械臂仿真_移动机器人matlab运动学仿真

    基于matlab的机械臂仿真_移动机器人matlab运动学仿真目的  本文手把手教你如何在Mathematica软件中搭建机械臂的三维仿真环境,包括以下几部分:  1. 如何导入机械臂的三维模型;  2. 如何进行(正/逆)运动学仿真;  3. 如何进行(正/逆)动力学仿真;  4. 如何进行碰撞检测;  5. 如何进行控制方法的验证;  先看一下效果(先尝后买):  对于机器人研发设计人员,一款好用的仿真软件能对他的

    2022年10月20日
    3

发表回复

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

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