Hãy xem lại hai.
Cấu hình
Tiện ích mở rộng Android của Kotlin
- Nhập phần mở rộng tổng hợp bố trí thích hợp:
import kotlinx.android.synthetic.main.<layout>.*
- Lượt xem tham chiếu trong mã thông qua id của họ :
textView.text = "Hello, world!"
. Các tiện ích mở rộng này hoạt động trên : Activities
, Fragments
và Views
.
Xem đóng sách
- Tạo tham chiếu ràng buộc trong lớp của bạn:
private lateinit var binding
YourClassBinding
- Thổi phồng ràng buộc của bạn
binding = YourClassBinding.inflate(layoutInflater)
bên Activity
's onCreate
và cuộc gọi setContentView(binding.root)
, hoặc thổi phồng nó trong Fragment
' s onCreateView
sau đó trả lại:return binding.root
- Lượt xem tham chiếu trong mã thông qua liên kết sử dụng id của họ
binding.textView.text = "Hello, world!"
Loại an toàn
Theo định nghĩa, Phần mở rộng và ViewBinding của Kotlin là loại an toàn, bởi vì các chế độ xem được tham chiếu đã được chuyển sang các loại thích hợp.
An toàn vô hiệu
Phần mở rộng của Kotlin Android và ViewBinding đều an toàn. ViewBinding không có bất kỳ lợi thế nào ở đây . Trong trường hợp của KAE , nếu chế độ xem chỉ xuất hiện trong một số cấu hình bố cục, IDE sẽ chỉ ra điều đó cho bạn:
Vì vậy, bạn chỉ coi nó như bất kỳ loại nullable nào khác trong Kotlin và lỗi sẽ biến mất:
Áp dụng thay đổi bố cục
Trong trường hợp Tiện ích mở rộng Android của Kotlin , bố cục thay đổi ngay lập tức chuyển sang thế hệ tiện ích mở rộng tổng hợp, vì vậy bạn có thể sử dụng chúng ngay lập tức. Trong trường hợp ViewBinding , bạn phải xây dựng dự án của mình
Cách sử dụng bố trí không chính xác
Trong trường hợp Tiện ích mở rộng Android của Kotlin , có thể nhập các tiện ích mở rộng tổng hợp bố cục không chính xác, do đó gây ra NullPointerException
. Điều tương tự cũng áp dụng cho ViewBinding , vì chúng ta có thể nhập sai Binding
lớp. Mặc dù, có nhiều khả năng bỏ qua việc nhập sai so với tên lớp không chính xác, đặc biệt là nếu tệp bố cục được đặt tên tốt sau Activity
/ Fragment
/ View
, vì vậy ViewBinding có ưu thế ở đây.
Tóm tắt về KAE vs ViewBinding
- Loại an toàn - Vẽ.
- Null an toàn - Vẽ.
- Mã nồi hơi - KAE thắng. Từ tài liệu mở rộng Android của Kotlin :
Plugin Phần mở rộng Android của Kotlin cho phép chúng tôi có được trải nghiệm tương tự với một số thư viện này mà không cần phải thêm bất kỳ mã nào.
- Áp dụng thay đổi bố cục - KAE thắng. Các thay đổi ngay lập tức trái ngược với ViewBinding .
- Cách sử dụng bố cục không chính xác - ViewBinding thắng
Tôi nghĩ có một quan niệm sai lầm lớn về việc ViewBinding thay thế cho KAE . Mọi người nghe các từ khóa lớn và lặp lại chúng mà không cần xác minh trước. Chắc chắn, ViewBinding là tùy chọn tốt nhất để phát triển Java ngay bây giờ (thay thế cho ButterKnife ), nhưng không có hoặc có ít lợi thế so với KAE trong Kotlin (xem phần Sử dụng bố cục không chính xác ).
Lưu ý bên lề:
Tôi chắc chắn mọi người DataBinding sẽ thích ViewBinding :)