Я вражений тим, що ніхто не говорив про це, але будьте обережні, хоча android:onClickXML, здається, є зручним способом обробки кліків, setOnClickListenerреалізація робить щось додаткове, ніж додавання onClickListener. Дійсно, це перетворило властивість view clickableна істину.
Незважаючи на те, що це не може бути проблемою для більшості реалізацій Android, згідно з конструктором телефону, кнопка завжди має значення за замовчуванням clickkable = true, але для інших конструкторів у певній моделі телефону за замовчуванням може бути встановлено clickable = false у некнопкових поданнях.
Отже, встановлення XML недостатньо, ви повинні весь час думати, щоб додати android:clickable="true"кнопку, яка не є кнопкою, і якщо у вас є пристрій, де за замовчуванням можна натиснути = true, і ви забули навіть один раз поставити цей атрибут XML, ви не помітите проблема під час роботи, але отримає відгук на ринку, коли вона буде в руках ваших клієнтів!
Крім того, ми ніколи не можемо бути впевнені в тому, як proguard буде затушувати та перейменовувати атрибути XML та метод класу, а значить, не на 100% безпечно, щоб одного разу вони ніколи не мали помилки.
Тож якщо ви ніколи не хочете мати проблем і ніколи про це не думайте, краще скористатися setOnClickListenerтакими бібліотеками, як ButterKnife з анотацією@OnClick(R.id.button)
onclickоскільки вам потрібно переконатися, що кожен клас реалізує цей метод. Це припускає, що ви використовуєте макет більше одного разу. Однак, якщо ви хочете мати інтерфейс Java, щоб переконатися, що метод знаходиться у всіх класах, які його реалізували, вам не доведеться турбуватися.