Para definir las acciones al hacer clic en un boton se puede definir de 3 formas al programar para android:
- Declarar el evento en el XML layout y el metodo en el activity.
- Declarar el metodo y el evento en el activity.
- Y por ultimo mediante DataBinding.
Android tiene más de una forma de trabajar los eventos de la interacción usuario-aplicación. Al considerar los eventos de tu interfaz, se busca capturar los eventos desde el objeto de vista específico con el que interactúa el usuario.
Entre las diversas clases de vista a usar para componer tu diseño, observarás varios métodos de atención de llamada públicos que pueden ser útiles para eventos de IU. Estos métodos son llamados por Android cuando la acción respectiva ocurre en ese objeto.
Entre las diversas clases de vista a usar para componer tu diseño, observarás varios métodos de atención de llamada públicos que pueden ser útiles para eventos de IU. Estos métodos son llamados por Android cuando la acción respectiva ocurre en ese objeto.
Por ejemplo, cuando tocamos una vista (un botón), se llama al método onTouchEvent() del objeto. Y para interceptar esto se debe extender la clase y reemplazar el método. Pero, extender todos los objetos de vista para manejar tal evento no sería práctico.
Por eso, la clase de vista también contiene varias opciones de interfaces anidadas con devoluciones de llamada que puedes definir más fácilmente, llamadas también receptores de eventos, te permiten capturar la interacción del usuario con tu IU. Quizás en algún momento desees extender una clase de vista a fin de crear un componente personalizado.
PRIMER METODO
El primer metodo y la forma mas basic de programar manejador del evento click del boton, es agregando el "android:onClick" atributo en el elemento "Button" del layout XML correspondiente a la vista. El valor para este atributo debe ser el mismo que el nombre del metodo que queremos llamar desde el evento clic del boton. En la actividad estará el metodo al que llamara el evento.
El metodo declarado debe tener exactamente el mismo nombre que se escriba en android:onClick. Especialmente debe cumplir con las siguientes condiciones:
- Ser publico
- Devolver void
- Definir una Vista como su unico parametro(esta sera la vista donde fue ejecutado)
Tambien puedes declarar el manejador del evento click desde el programa en lugar de hacerlo en el layout XML. Esto sera necesario si se inicia el boton en tiempo de ejecución o si necesita declarar el comportamiento del click en la subclase de un Fragment.
Para programar el manejador del evento, debe crear un objeto View.OnClickListenner y asignarlo al boton, llamandolo en el setOnClickListener(View.OnClickListener).
RECEPTOR DE EVENTOS
Un receptor de eventos es una interfaz de clase View, contiene un solo método de devolución de llamada. A estos métodos los llamará el marco de trabajo Android cuando la vista (con la que se registró el receptor), sea iniciada por la interacción del usuario con el elemento de la IU.
Las interfaces de receptores de eventos, incluyen los siguientes métodos de devolución de llamada:
onClick()
- Desde
View.OnClickListener
. Se llama a este método cuando el usuario toca el elemento (en el modo táctil), o selecciona el elemento con las teclas de navegación o la bola de seguimiento y presiona la tecla Intro o la bola de seguimiento adecuada. onLongClick()
- Desde
View.OnLongClickListener
. Se llama a este método cuando el usuario toca y mantiene presionado el elemento (en el modo táctil), o selecciona el elemento con las teclas de navegación o la bola de seguimiento y mantiene presionada la tecla Intro o la bola de seguimiento adecuada (durante un segundo). onFocusChange()
- Desde
View.OnFocusChangeListener
. Se llama a este método cuando el usuario navega hacia el elemento o sale de él utilizando las teclas de navegación o la bola de seguimiento. onKey()
- Desde
View.OnKeyListener
. Se llama a este método cuando el usuario se centra en el elemento y presiona o suelta una tecla física del dispositivo. onTouch()
- Desde
View.OnTouchListener
. Se llama a este método cuando el usuario realiza una acción calificada como un evento táctil, por ejemplo, presionar, soltar o cualquier gesto de movimiento en la pantalla (dentro de los límites del elemento). onCreateContextMenu()
- Desde
View.OnCreateContextMenuListener
. Se llama a este método cuando se crea un menú contextual (como resultado de un "clic largo" sostenido). Consulta la explicación sobre menús contextuales en la guía para desarrolladores
Estos métodos son únicos para cada interfaz, para definir uno de estos, implementa la interfaz anidada en su actividad o defínela como una clase anónima. Luego, pasa una instancia de tu implementación al método View.set...Listener() respectivo. (Por ejemplo, llama a setOnClickListener() y pásale tu implementación de OnClickListener).
En el ejemplo siguiente, se muestra cómo registrar un receptor onClick para un botón.
Te puede parecer más conveniente implementar OnClickListener como parte de tu actividad. Esto evitará la carga extra de la clase y la asignación de objetos.