Tôi rất ngạc nhiên là không ai nói về điều này nhưng hãy cẩn thận, mặc dù android:onClick
XML có vẻ là một cách thuận tiện để xử lý nhấp chuột, nhưng setOnClickListener
việc triển khai thực hiện một số việc bổ sung hơn là thêm onClickListener
. Thật vậy, nó đặt thuộc tính xemclickable
thành true.
Mặc dù nó có thể không phải là vấn đề trên hầu hết các triển khai Android, nhưng theo hàm tạo của điện thoại, nút luôn được mặc định thành clickable = true nhưng các hàm tạo khác trên một số kiểu điện thoại có thể có mặc định clickable = false trên các chế độ xem không phải Nút.
Vì vậy, thiết lập XML là không đủ, bạn phải suy nghĩ mọi lúc để thêm android:clickable="true"
vào nút non, và nếu bạn có một thiết bị mà mặc định là clickable = true và bạn quên đặt thuộc tính XML này thậm chí một lần, bạn sẽ không nhận thấy vấn đề trong thời gian chạy nhưng sẽ nhận được phản hồi trên thị trường khi nó sẽ đến tay khách hàng của bạn!
Ngoài ra, chúng ta không bao giờ có thể chắc chắn về cách proguard sẽ xáo trộn và đổi tên các thuộc tính XML và phương thức lớp, vì vậy không an toàn 100% rằng chúng sẽ không bao giờ có lỗi một ngày nào đó.
Vì vậy, nếu bạn không bao giờ muốn gặp rắc rối và không bao giờ nghĩ về nó, tốt hơn là sử dụng setOnClickListener
hoặc các thư viện như ButterKnife với chú thích@OnClick(R.id.button)
onclick
vì bạn cần đảm bảo rằng mọi lớp đều triển khai phương thức đó. Điều này giả định rằng bạn đang sử dụng bố cục nhiều lần. Tuy nhiên, nếu bạn có một giao diện java để đảm bảo phương thức nằm trong tất cả các lớp đã triển khai nó, bạn sẽ không phải lo lắng.