¿Diferencia entre el evento OnClick () y OnClickListener?

Siempre uso el evento onclick() en la mayoría de mis proyectos. Pero, leí sobre OnClickListener() . ¿Alguien puede decir cuál es la diferencia entre estos dos? ¿Y cuál es mejor usar en la aplicación de Android?

No estoy seguro de que la pregunta sea clara. View.OnClickListener es una interfaz que define el método onClick(View) . Si tiene una clase que tiene la intención de escuchar los clics, ambos deben implementar la interfaz (si aún no lo hace), e implementar este método también. Tienes que usar ambos; no son alternativas de alguna manera.

OnClickListener es la interfaz que necesita implementar y se puede establecer en una vista en código Java.

Últimamente, android agregó un atributo xml a las vistas llamadas android:onclick , que se puede usar para manejar los clics directamente en la actividad de la vista sin necesidad de implementar ninguna interfaz.

Ambos funcionan de la misma manera, solo que uno se establece a través del código java y el otro a través del código xml.

onClick que el uso de onClick es el que define en XML Layout. Estas dos son alternativas que cumplen la misma función pero se implementan de manera diferente.

  1. El onClick con enlace de función en XML Layout es un enlace entre onClick y la función que llamará. La función debe tener un argumento (la View ) para que onClick funcione.

  2. Un OnClickListener es una interfaz que cualquier clase podría implementar. Como es una interfaz que cualquier clase podría implementar, tiene más flexibilidad y es más compleja en su forma. Pocas flexibilidades que podría tener con OnClickListener

    • Podría cambiar fácilmente una implementación de escucha por otra si lo necesita.
    • Un OnClickListener le permite separar la acción / comportamiento del evento click de la View que desencadena el evento. Mientras que para casos simples esto no es tan importante, para el manejo complejo de eventos, esto podría significar una mejor legibilidad y mantenimiento del código
    • Como OnClickListener es una interfaz, la clase que lo implementa tiene flexibilidad para determinar las variables de instancia y los métodos que necesita para manejar el evento. De nuevo, esto no es gran cosa en casos simples, pero para casos complejos, no queremos mezclar necesariamente las variables / métodos relacionados con el manejo de eventos con el código de la Vista que desencadena el evento.

OnClickListener es lo que espera a que alguien realmente haga clic, un clic determina lo que sucede cuando alguien hace clic

el oyente es una clase, el onclick es un método, esta distinción no es muy útil en casos simples, pero si quieres ser más complicado, se vuelve más necesario

 Button button = (Button)findViewById(R.id.buttonId); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Do stuff } }); 

OnClickListener es una interfaz y onClick es el método de OnClickListener .

Usamos

  public void button_onClick_name(View v) { ------- } 

para definir un método fuera de la clase. Pero para definir un componente Haga clic en evento dentro de una clase, usamos onclick oyente.

Hay un par de razones por las que es posible que desee configurar programáticamente OnClickListener . El primero es si alguna vez desea cambiar el comportamiento de su botón mientras se ejecuta su aplicación. Puede apuntar su botón a otro método por completo, o simplemente desactivar el botón configurando OnClickListener que no hace nada.

Cuando define un oyente que usa el atributo onClick , la vista busca un método con ese nombre solo en su actividad de host. Configurar programáticamente un OnClickListener permite controlar el comportamiento de un botón desde otro lugar que no sea la actividad del host. Esto será muy relevante para los Fragments , los Fragments siempre necesitan usar OnClickListeners para controlar sus botones, ya que no son Actividades, y no se buscarán los oyentes definidos en onClick .

Usamos OnClick en xml y OnClickListner en código java . Ambos se usan para realizar una función.

Considera “OnClickListener” como un chico que está esperando que tu usuario haga clic en el botón de tu aplicación. Entonces tu chico ejecutará tu método OnClick () .

Debes poner una identificación en tu botón en tu archivo xml, luego darle un nombre en tu archivo MainActivity.java. Luego configura un oyente click para tu chico. Y agregue su método onClick. Es por eso que OnClick está vinculado a la interfaz View.OnClickListener: https://developer.android.com/reference/android/view/View.OnClickListener.html

Ejemplo:

 Button myButton = (Button)findViewById(R.id.myButton); myButton.setOnClickListener(new View.OnClickListener(){ @override public void onClick(View v) { // your method... } } 

Puede agregar el atributo android:onClick="your_method" en su XML.

Ejemplo:

   

Cuando queremos agregar click listener al botón en código Java, usamos OnClickListener .
Cuando queremos agregar click oyente al botón en el archivo de diseño, usamos android:onClick="your_method"
Si usa la variante XML, debe implementar your_method en su clase de aplicación.

Hay un par de razones por las que es posible que desee configurar programáticamente OnClickListener. El primero es si alguna vez desea cambiar el comportamiento de su botón mientras se ejecuta su aplicación. Puede apuntar su botón a otro método por completo, o simplemente desactivar el botón configurando OnClickListener que no hace nada.

Cuando define un oyente que usa el atributo onClick, la vista busca un método con ese nombre solo en su actividad de host. Configurar programáticamente un OnClickListener le permite controlar el comportamiento de un botón desde otro lugar que no sea la actividad del host. Esto será muy relevante cuando aprendamos sobre los Fragmentos, que son básicamente mini actividades, que le permiten crear colecciones de vistas reutilizables con su propio ciclo de vida, que luego se pueden ensamblar en actividades. Los fragmentos siempre necesitan utilizar OnClickListeners para controlar sus botones, ya que no son Actividades, y no se buscarán oyentes definidos en onClick.

todos mencionaron sobre OnClickListener listner que siempre se usó. Quiero agregar un punto más a android:onClick funciona como método y no necesita ser referencia, por lo que es útil cuando hay que agregar el botón después de que se haya ejecutado alguna tarea, por lo que no se puede hacer referencia para OnClickListener .

Por example cuando creamos viewpager con solo diseño (sin fragmentos) si coloca un botón en cualquier diseño, solo se inicializó cuando el diseño está visible, por lo que no puede usar el método findViewById para el botón, en ese caso android:onClick convirtió en útil simplemente ponga ese método en actividad !!

Aquí está la terminología simple. Si estás en casa y quieres llamar a alguien, puedes llamar directamente y ellos pueden escucharte. (use onclick). Pero si está afuera y desea Llamar a alguien a su casa, necesita usar un teléfono o Internet. (Necesita usar onclicklistener). En Android, todo comienza desde casa, es decir, actividad_principal. Esta es la forma en que Android facilita el trabajo; Cuando tiene una actividad, no tiene que adjuntar un oyente, crear un objeto y definirlo. Solo usa onClick. Onclicklistener generalmente se usa en Fragments. Entonces, sigue codificando

Hay un par de razones por las que es posible que desee configurar programáticamente OnClickListener . El primero es si alguna vez desea cambiar el comportamiento de su botón mientras se ejecuta su aplicación. Puede apuntar su botón a otro método por completo, o simplemente desactivar el botón configurando OnClickListener que no hace nada.

Cuando define un oyente que usa el atributo onClick , la vista busca un método con ese nombre solo en su actividad de host. Configurar programáticamente un OnClickListener permite controlar el comportamiento de un botón desde otro lugar que no sea la actividad del host. Esto será muy relevante cuando hablemos de Fragmentos, que son básicamente mini actividades, que le permiten crear colecciones de vistas reutilizables con su propio ciclo de vida, que luego se pueden ensamblar en actividades. Los fragmentos siempre necesitan utilizar OnClickListeners para controlar sus botones, ya que no son Actividades, y no se buscarán oyentes definidos en onClick .