¿Diferencia entre el evento OnClick () y OnClickListener?

Siempre estoy usando el evento onclick() en la mayoría de mis proyectos. Pero, leí sobre OnClickListener() . ¿Puede alguien decir cuál es la diferencia entre estos dos? ¿Y cuál es el mejor utilizar 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, debe implementar la interfaz (si no está extendiendo una clase que sí), e implementar este método también. Tienes que usar ambos; No son de alguna manera alternativas.

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

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

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

Estoy asumiendo por onClick que se utiliza es el que define en XML Layout. Estos dos son alternativas que sirven a la misma función pero se implementan de manera diferente.

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

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

    • Podrías intercambiar fácilmente una implementación de escuchas con otra si es necesario.
    • Un OnClickListener le permite separar la acción / comportamiento del evento de clic de la View que activa el evento. Mientras que para casos simples esto no es un gran problema, para el manejo de eventos complejos, esto podría significar una mejor legibilidad y la capacidad de mantenimiento del código
    • Como OnClickListener es una interfaz, la clase que lo implementa tiene flexibilidades para determinar las variables de instancia y los métodos que necesita para manejar el evento. Una vez más, esto no es una gran cosa en casos simples, pero para casos complejos, no queremos mezclar las variables / métodos que se relacionan con el manejo de eventos con el código de la Vista que desencadena el evento.

OnClickListener es lo que espera a que alguien haga clic en realidad, onclick determina qué 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 evento de Click de componente dentro de una clase, utilizamos listener de onclick.

Hay un par de razones por las que es posible que desee establecer un OnClickListener . La primera es si alguna vez desea cambiar el comportamiento de su botón mientras su aplicación se está ejecutando. Puede apuntar el botón en otro método completamente o simplemente deshabilitar el botón estableciendo un OnClickListener que no hace nada.

Cuando define un listener mediante el atributo onClick , la vista busca un método con ese nombre sólo en su actividad de host. Programar la configuración de OnClickListener permite controlar el comportamiento de un botón desde un lugar distinto de su actividad de host. Esto será muy relevante para Fragments , 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 utilizan para realizar una función.

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

Usted tiene que poner un identificador a su botón en su archivo xml, a continuación, darle un nombre en su MainActivity.java archivo. A continuación, establecer un oyente de clic para su chico. Y agrega tu método onClick. Por eso 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:

  <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Click" android:onClick="your_method"/> 

Cuando queremos agregar el listener de tecleo al botón en el código de Java, usamos OnClickListener .
Cuando queremos añadir el listener de clic al botón en el archivo de diseño, usamos android:onClick="your_method"
Si utiliza 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 establecer un OnClickListener mediante programación. La primera es si alguna vez desea cambiar el comportamiento de su botón mientras su aplicación se está ejecutando. Puede apuntar el botón en otro método completamente o simplemente deshabilitar el botón estableciendo un OnClickListener que no hace nada.

Cuando define un listener mediante el atributo onClick, la vista busca un método con ese nombre sólo en su actividad de host. Programar la configuración de OnClickListener le permite controlar el comportamiento de un botón desde un lugar distinto de su actividad de host. Esto se volverá muy relevante cuando aprendamos Fragmentos, que son básicamente mini actividades, lo que le permite construir colecciones reutilizables de vistas con su propio ciclo de vida, que luego se pueden ensamblar en actividades. Los fragmentos siempre necesitan usar OnClickListeners para controlar sus botones, ya que no son actividades y no se buscarán los oyentes definidos en onClick.

Todo el mundo ha mencionado sobre OnClickListener listner que siempre se utiliza. Quiero añadir un punto más android:onClick funciona como método y no es necesario ser referencia por lo que es útil cuando se tiene que agregar el botón después de una tarea ejecutada por lo que no se puede hacer referencia a ella para OnClickListener .

Para un example cuando creamos viewpager con solo layout (sin fragmentos) si pones un boton en cualquier layout lo insializas solo cuando layout visible para que no puedas usar method findViewById para Button en ese caso android:onClick volvió útil solo pon ese metodo En actividad !!

Aquí está la terminología simple Si u está en casa y U quiere llamar a alguien .. puede llamar directamente y pueden escuchar u. (Use onclick). Pero si u están fuera y u quiere llamar a alguien en casa u necesidad de utilizar ya sea teléfono o Internet. (Necesidad de usar onclicklistener). En Android todo comienza desde casa, es decir main_activity Esta es la forma en que android facilita su trabajo; Cuando u tiene una actividad u no tiene que adjuntar un oyente, crear un objeto y definirlo. Sólo usa onClick. Onclicklistener se utilizan generalmente en Fragmentos. Así que mantenga la codificación.

  • Listview no se puede hacer clic cuando se puede seleccionar la vista de texto dentro de esa vista de lista
  • Android: Cambiar el fondo del botón en ListView Row con onClick
  • OnClickListener no se puede resolver a un tipo (Eclipse)
  • Cómo configurar un spinner onClickListener () en Android
  • Cómo hacer clic o tocar en un texto de TextView
  • Android se congela cuando hay una NullPointerException en OnClickListener.onClick (otras tareas no se pueden iniciar)
  • Obtener la latitud y la longitud de un clic en el mapa en osmdroid
  • OnClick PendingIntent en widget a veces no funciona
  • Interceptación de clics desde subview en Android
  • ¿Pasar un argumento al llamar a setOnClickListener?
  • Evitar que DialogFragment se rechace cuando se hace clic en el botón
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.