(1)ButterKnife是什么?

在开发过程中,我们总是会写大量的findViewById和点击事件,像初始view、设置view监听这样简单而重复的操作让人觉得特别麻烦,当然不会偷懒的程序员不是好程序员,自然也出现了相应的解决方案--依赖注入。而ButterKnife则是依赖注入中相对简单易懂的很不错的开源框架,(其实ButterKnife也不算严格意义上的依赖注入,后面文章中会做分析)。但ButterKnife作为JakeWharton大神写的注解框架被广泛应用于android开发中,自然也有它的过人之处。下面对它的使用过程进行描述。

butterKnife

(2)ButterKnife 有哪些优势?

ButterKnife的具体使用,请参考文章

http://blog.csdn.net/itjianghuxiaoxiong/article/details/50177549

它的具体优势:

1.强大的View绑定和Click事件处理功能,简化代码,提升开发效率

2.方便的处理Adapter里的ViewHolder绑定问题

3.运行时不会影响APP效率,使用配置方便

4.代码清晰,可读性强

butterknife的使用

(3) butterknife 和其他依赖注入框架的区别在哪里?

3.1 依赖注入框架的区别的联系:

其实主要在android中使用的依赖注入框架为Dagger、Butter Knife、RoboGuice、Android Annotations。这里提供链接:

Android's Options for Dependency Injection: Dagger, RoboGuice, and ButterKnife

对应的翻译文章:Android依赖注入:Dagger、RoboGuice和ButterKnife.

3.2 当然,这种典型的问题当然少不了StackOverflow上去看看,

输入关键字

找到点赞最多的答案,肯定对你有帮助

大概意思:

Buffer knife目的为注入到view,所以能够在非activity里面注入,也能注入到inflate的views里面Dagger能够注入到任何你想要的对象,只要其在module类中。或者它是构造器。但是缺少对方法和字段的注入支持。Buffer knife只是避免样板代码,findViewById,仅此而已,所以不能算是一个真正的注入。只是一个view的代言。

(4)ButterKnife使用中有哪些注意的点呢?

注意:

Activity ButterKnife.bind(this);必须在setContentView();之后,且父类bind绑定后,子类不需要再bind

Fragment ButterKnife.bind(this, mRootView);

属性布局不能用private or static 修饰,否则会报错

setContentView()不能通过注解实现。

ButterKnife已经更新到版本7.0.1了,以前的版本中叫做@InjectView了,而现在改用叫@Bind,更加贴合语义。

在Fragment生命周期中,onDestoryView也需要Butterknife.unbind(this)

ButterKnife不能再你的library module中使用哦!!这是因为你的library中的R字段的id值不是final类型的,但是你自己的应用module中确是final类型的。针对这个问题,有人在Jack的github上issue过这个问题,他本人也做了回答,点击这里

属性必须是一个常量

(5)我还想更懒怎么办?

哈哈,这里说的是添加插件,让你写代码更快捷。

Zelezny插件的使用的使用能让你变得更懒(也代码更快)

**Zelezny插件的使用**

5.1怎么使用插件?

插件使用步骤1

插件使用步骤2

插件使用步骤3

(6)推荐链接:

1ButterKnife github地址

2详解Dagger2

3Android's Options for Dependency Injection: Dagger, RoboGuice, and ButterKnife(这里是翻译文章链接Android依赖注入:Dagger、RoboGuice和ButterKnife)

4Dagger官网

5关于在library中应用ButterKnife出现的问题

68 个最优秀的 Android Studio 插件

ButterKnife使用详谈的更多相关文章

  1. 掘金 Android 文章精选合集

    掘金 Android 文章精选合集 掘金官方 关注 2017.07.10 16:42* 字数 175276 阅读 50053评论 13喜欢 669 用两张图告诉你,为什么你的 App 会卡顿? - A ...

  2. Android注解使用之通过annotationProcessor注解生成代码实现自己的ButterKnife框架

    前言: Annotation注解在Android的开发中的使用越来越普遍,例如EventBus.ButterKnife.Dagger2等,之前使用注解的时候需要利用反射机制势必影响到运行效率及性能,直 ...

  3. Android Butterknife 8.4.0 使用方法总结

    转载请标明出处:http://www.cnblogs.com/zhaoyanjun/p/6016341.html 本文出自[赵彦军的博客] 前言 ButterKnife 简介 ButterKnife是 ...

  4. Android开发学习之路-使用annotationProcessor配置Butterknife

    Apt工具的作者宣布了不再维护该工具了,而且Android Studio也有了自己的插件,并且可以通过gradle来简单的配置. 其实用Butterknife的都知道,没有apt,onClick绑定不 ...

  5. Android ButterKnife配置使用

    ButterKnife在GitHub的地址:https://github.com/JakeWharton/butterknife 最新的版本是:8.4.0 app 模块的build.gradle: a ...

  6. Android注解使用之ButterKnife 8.0注解使用介绍

    前言: App项目开发大部分时候还是以UI页面为主,这时我们需要调用大量的findViewById以及setOnClickListener等代码,控件的少的时候我们还能接受,控件多起来有时候就会有一种 ...

  7. JavaScript RegExp 基础详谈

    前言: 正则对于一个码农来说是最基础的了,而且在博客园中,发表关于讲解正则表达式的技术文章,更是数不胜数,各有各的优点,但是就是这种很基础的东西,如果我们不去真正仔细研究.学习.掌握,而是抱着需要的时 ...

  8. ButterKnife Zelezny从配置到使用

    插件介绍:ButterKnife是一个专注于Android系统的View注入框架,可以减少大量的findViewById以及setOnClickListener代码,可视化一键生成.又一神器,完美告别 ...

  9. Android Studio插件之快速findViewById(butterknife和Android CodeGenerator的使用)

    首先在设置里面的Plugins里面下载安装插件: 安装之后会提示重启, 然后就是怎么使用了: butterknife的使用: 首先在build.gradle(app)里面添加这句话: compile ...

随机推荐

  1. 使用synergyc共享键鼠

    通常情况下我们经常同时操作两台或者多台电脑, 这样就会存在多个键盘鼠标来回切换的问题. 那么我们主要的目标就是怎么在多个电脑上共享一套键盘鼠标,而且可以轻松的来回切换呢. 网上有很多的解决方案,这里我 ...

  2. HttpSession 入门

    1. HttpSession 概述 位于 javax.servlet.http 包; HttpSession 是由 JavaWeb 提供的功能, 用来会话跟踪的类, session 是服务器端对象, ...

  3. python DES3 加密解密

    背景:想给公司的进件流程写一套进件脚本,首先遇到的就是加密解密.公司用的 DES3 + base64 加密解密 一.安装  pycrypto模块,推荐用pycrypto编译文件,直接下载安装就行 ht ...

  4. Flask 请求源码分析

    执行app.run()方法: def run(self, host=None, port=None, debug=None, **options): from werkzeug.serving imp ...

  5. Python高阶函数-闭包

    高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 在这里我们首先回忆一下python代码运行的时候遇到函数是怎么做的. 从python解释器开始执行之后,就在内存中开辟了一个空间 每当 ...

  6. rails timeout 异常

    发现经常有”超时“的错误信息,如/usr/lib/ruby/1.8/timeout.rb:54:in `rbuf_fill': execution expired (Timeout::Error),恩 ...

  7. 错误:为 Web 项目“XXX”配置的 URL“http://localhost/”的网站同时存在于本地 IIS Web 服务器和 IIS Express Web 服务器上。您需要使用 IIS 管理器在 IIS 中更改此网站的绑定。

    解决方法: 用记事本打开MVC网站的项目文件(*.csproj),滚动条拉到最下,找到这两个节点: <UseIIS>True</UseIIS> <AutoAssignPo ...

  8. html-3,table 表格标签 tr th td caption thead tbody tfoot 的简单使用

    <!-- table border='1' style="border-collapse:collapse;" border 表格的像素宽度 border-collapse: ...

  9. 发送邮件——stamplib

    配置文email.ini件信息: [email]sender=xxxxxxxxxxxpwd=xxxxxxxxxxxxreciver=xxxxxxxxxxxxxpython 3.x代码如下: impor ...

  10. Bootstrap总结一

    参考我的博客:http://www.isedwardtang.com/2017/08/30/bootstrap-primer-1/