我刚开始使用奶油刀 在项目中,使用butterknife的同事,版本是7.0.0。
我看到他写@Bind(R.id.tv_name)
但是我看到butterknife官方网站的butterknife版本是8.0.1,语法是@BindView(R.id.tv_name)
语法是否改变了?或两者都可以使用?或其他什么?
他们之间有什么区别?
我在互联网上找不到答案 我希望大家的帮助,谢谢!
答案 0 :(得分:15)
是的,版本8.0中的语法发生了变化。
您可以在此处查看更改日志:https://github.com/angular/angular/pull/9042以查看更改。但是从7.X到8.X,更改日志是:
@Bind
变为@BindView
和@BindViews
(分别为一个视图和多个视图)。- 对
bind
的调用现在返回Unbinder
个实例,该实例可用于null
个引用。这取代了unbind
API并添加了对能够清除侦听器的支持。- 新功能:
@BindArray
将String
,CharSequence
和int
数组以及TypeArray
绑定到字段。- 新:
@BindBitmap
将Bitmap
个实例从资源绑定到字段。@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
,以便不会保留任何外部视图引用。