2016-06-06 15 views
7

Tôi mới bắt đầu sử dụng butterknife.
Trong dự án, đồng nghiệp sử dụng butterknife, phiên bản 7.0.0.Sự khác nhau giữa `@ Bind` và` @ BindView` trong butterknife là gì?

Tôi thấy anh ấy viết @Bind(R.id.tv_name).
Nhưng tôi thấy phiên bản butterknife trang web chính thức của butterknife là 8.0.1, cú pháp là @BindView(R.id.tv_name)

Cú pháp có thay đổi không? hoặc cả hai có thể được sử dụng? hoặc cái gì khác?
Sự khác nhau giữa chúng là gì?

Tôi không tìm thấy câu trả lời trên Internet
Tôi hy vọng sự giúp đỡ của mọi người, thx!

Trả lời

14

Yup, cú pháp đã thay đổi trong phiên bản 8.0.

Bạn có thể kiểm tra các thay đổi ở đây: https://github.com/JakeWharton/butterknife/blob/master/CHANGELOG.md#version-800-2016-04-25 để xem các thay đổi. Nhưng từ 7.x đến 8.x các changelog là:

  • @Bind trở thành @BindView@BindViews (một quan điểm và nhiều quan điểm, tương ứng).
  • Gọi tới bind hiện trả lại số Unbinder có thể được sử dụng để tham chiếu null. Điều này thay thế API unbind và thêm hỗ trợ để có thể xóa người nghe.
  • Mới: @BindArray liên kết String, CharSequenceint mảng và TypeArray vào trường.
  • Mới: @BindBitmap liên kết Bitmap trường hợp từ tài nguyên đến trường.
  • @BindDrawable hiện hỗ trợ trường tint chấp nhận thuộc tính chủ đề.
  • Thời gian chạy và trình biên dịch hiện được chia thành hai tạo phẩm.
    compile 'com.jakewharton:butterknife:8.0.0'
    apt 'com.jakewharton:butterknife-compiler:8.0.0'

  • mới: apply quá tải mà chấp nhận một cái nhìn duy nhất và mảng quan điểm.

  • Quy tắc ProGuard hiện được gửi bên trong thư viện và được bao gồm tự động.
  • @Optional chú thích trở lại các phương pháp đánh dấu là tùy chọn.
+0

Cảm ơn những nỗ lực của bạn! :) – iRuoBin

2

Vâng, sự khác biệt duy nhất giữa các từ khóa là @Bind được đổi tên thành @BindView trong v8.0.0.

Xin lưu ý rằng ButterKnife.unbind() đã bị xóa và được thay thế bằng Unbinder được trả lại bởi bind() để không có tham chiếu chế độ xem bên ngoài nào được giữ lại.

Các vấn đề liên quan