¿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 ?.
- Implementar onClick sólo para un compuesto TextView dibujable
- Diferencia entre onSingleTapConfirmed y onSingleTapUp
- Haga que un botón de Android cambie el fondo al hacer clic en XML
- Cómo simular un clic de botón con el código?
- Agregar a un control SlidingDrawer?
- Float: izquierda deja de hacer clic en evento en android?
- AppWidget PendingIntent no funciona después de reiniciar el Lanzador
- Las vistas de Android amplían la animación
- Android: clics retardados en ListView
- Cerrar Spinner en clic fuera de Spinner
- ¿Por qué OnClickListener en un ViewHolder no funciona?
- Android - Bloques de CheckBox ExpandableListView.OnGroupClickListener
- Android Detener la notificación de brindis por programación?
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.
-
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 (laView
) para que onClick funcione. -
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 conOnClickListener
- 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 laView
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.
- XDE.exe usando> 35% CPU todo el tiempo – es este comportamiento esperado? (VS Android Emulator)
- ¿Cómo puedo obtener Logcat para varios dispositivos que se ejecutan al mismo tiempo en Eclipse?