Một trong những tính năng thú vị nhất của hỗ trợ ràng buộc dữ liệu Android là nó cũng tạo ra các trường cho chế độ xem có ID được đặt. Việc này sẽ dọn dẹp mã lệnh không có trường hoặc cần gọi findViewById()
.Android có thể bị ràng buộc dữ liệu lười biếng?
Nhưng vấn đề là trường hợp ràng buộc chỉ có thể được truy xuất thông qua cuộc gọi bind()
có xu hướng lên lịch ràng buộc. Điều này là xấu khi dữ liệu đang được nhận một cách không đồng bộ và thông thường là NullPointerException
bị ném.
Trường hợp ràng buộc với trường Chế độ xem có được truy xuất trừ đi quá trình ràng buộc dữ liệu thực tế không?
stack-trace:
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.Boolean.booleanValue()' on a null object reference
at com.app.android.databinding.ActivityRestaurantDetailsBinding.executeBindings(ActivityRestaurantDetailsBinding.java:381)
at android.databinding.ViewDataBinding.executePendingBindings(ViewDataBinding.java:350)
at android.databinding.ViewDataBinding$6.run(ViewDataBinding.java:167)
at android.databinding.ViewDataBinding$5.onViewAttachedToWindow(ViewDataBinding.java:137)
at android.view.View.dispatchAttachedToWindow(View.java:14525)
Tôi cũng mong đợi như vậy. Khi kiểm tra mã được tạo ra, đã có nhiều kiểm tra null tại chỗ, nhưng nó không đúng với kiểu boolean này. Điều này có vẻ giống như một con bọ không? – razzledazzle
Tương tự với 'android: text =" @ {DateFormatter.format (item.orderDate)} "'. Điều này dẫn đến một nguyên nhân NPE gọi 'DateFormatter.format (null)'. – drindt
Sau khi đã sử dụng databinding trong vài tháng qua có vẻ vẫn còn rất nhiều vấn đề với kiểm tra null đó là rất đáng thất vọng. Nguyên nhân nổi bật nhất trong số đó là các kiểu boolean như @razzledazzle đã nói –