奶油刀中的`@ Bind`和`@BindView`有什么区别?

时间:2016-06-06 16:12:24

标签: android inject butterknife

我刚开始使用奶油刀 在项目中,使用butterknife的同事,版本是7.0.0。

我看到他写@Bind(R.id.tv_name) 但是我看到butterknife官方网站的butterknife版本是8.0.1,语法是@BindView(R.id.tv_name)

语法是否改变了?或两者都可以使用?或其他什么?
他们之间有什么区别?

我在互联网上找不到答案 我希望大家的帮助,谢谢!

2 个答案:

答案 0 :(得分:15)

是的,版本8.0中的语法发生了变化。

您可以在此处查看更改日志:https://github.com/angular/angular/pull/9042以查看更改。但是从7.X到8.X,更改日志是:

  
      
  • @Bind变为@BindView@BindViews(分别为一个视图和多个视图)。
  •   
  • bind的调用现在返回Unbinder个实例,该实例可用于null个引用。这取代了   unbind API并添加了对能够清除侦听器的支持。
  •   
  • 新功能:@BindArrayStringCharSequenceint数组以及TypeArray绑定到字段。
  •   
  • 新:@BindBitmapBitmap个实例从资源绑定到字段。
  •   
  • @BindDrawable现在支持接受主题属性的tint字段。
  •   
  • 现在,运行时和编译器被分成两个工件    compile 'com.jakewharton:butterknife:8.0.0'
       apt 'com.jakewharton:butterknife-compiler:8.0.0'

  •   
  • 新增:apply重载,接受单个视图和视图数组。

  •   
  • ProGuard规则现在在库中发布,并自动包含在内。
  •   
  • @Optional注释返回以将方法标记为可选。
  •   

答案 1 :(得分:4)

是的,这些关键字之间的唯一区别是{8}在v8.0.0中已重命名为@Bind

请注意,@BindView已被删除,并替换为ButterKnife.unbind()返回的Unbinder,以便不会保留任何外部视图引用。