Me sorprende que nadie haya hablado de esto, pero tenga cuidado, aunque android:onClick
XML parece ser una forma conveniente de manejar el clic, la setOnClickListener
implementación hace algo más que agregar el onClickListener
. De hecho, puso la propiedad view clickable
en true.
Si bien puede que no sea un problema en la mayoría de las implementaciones de Android, según el constructor del teléfono, el botón siempre es predeterminado para hacer clic = verdadero, pero otros constructores en algunos modelos de teléfono pueden tener un clic predeterminado = falso en vistas que no son de botón.
Entonces, configurar el XML no es suficiente, debe pensar todo el tiempo para agregar android:clickable="true"
un botón no, y si tiene un dispositivo donde el valor predeterminado es hacer clic = verdadero y olvida incluso una vez poner este atributo XML, no lo notará el problema en tiempo de ejecución, pero obtendrá la retroalimentación en el mercado cuando esté en manos de sus clientes.
Además, nunca podemos estar seguros de cómo proguard ofuscará y cambiará el nombre de los atributos XML y el método de clase, por lo que no es 100% seguro que nunca tendrán un error algún día.
Entonces, si nunca quiere tener problemas y nunca pensar en ello, es mejor usar setOnClickListener
bibliotecas como ButterKnife con anotación@OnClick(R.id.button)
onclick
ya que debe asegurarse de que todas las clases implementen ese método. Esto es asumiendo que está utilizando el diseño más de una vez. Sin embargo, si tuviera una interfaz java para asegurarse de que el método estuviera en todas las clases que lo implementaron, no tendría que preocuparse.