Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo manejar un botón que se hace clic en Android?

En Android parece que hay 3 maneras comunes de manejar clics de botón, ¿cuánta diferencia hay entre los métodos? ¿Y alguno de ellos es "mejor" de alguna manera?

Los tres métodos que sigo viendo son:

Clase anónima

Encuentra el botón por su ID, luego pasar una nueva clase anónima a setOnClickListener , por ejemplo en onCreate

 findViewById(R.id.myButton).setOnClickListener(new OnClickListener() { public void onClick(View v) { // .. Whatever } }); 

Implementar OnClickListener

Implementar OnClickListener y pasar this a setOnClickListener , a continuación, utilice una setOnClickListener switch basado en el ID del botón, por ejemplo, en onCreate

 findViewById(R.id.myButton).setOnClickListener(this); 

onClick implementar onClick como

 public void onClick(View v) { switch(v.getId()) { case R.id.myButton: // ... whatever ... break; } } 

Utilizar el atributo onClick XML

En el diseño XML de su actividad, en lugar de asignarle un ID a su botón, utilice onClick siguiente manera:

 <Button android:layout_width="fill_parent" android:layout_height="fill_parent" android:onClick="buttonClicked" android:text="Button" /> 

A continuación, tiene un método buttonClicked en su Acitiviy como este:

 public void buttonClicked(View v) { // ... whatever ... } 

En este momento tiendo a utilizar el atributo XML, pero eso es sólo porque implica la menor cantidad de código. ¿Cuándo debo usar los otros métodos?

2 Solutions collect form web for “Cómo manejar un botón que se hace clic en Android?”

Los dos primeros son los enfoques clásicos. El que prefieras es más una pregunta general de Java que una pregunta de Android. La tercera fue añadida más tarde para facilitar las cosas.

Configuración de un oyente de clic en un botón es una tarea muy común, pero requiere un poco de código de caligrafía. Una manera de reducir la cantidad de boilerplate es compartir un solo oyente de clic entre varios botones. Si bien esta técnica reduce el número de clases, todavía requiere una cantidad justa de código y todavía se requiere dar a cada botón un identificador en el archivo de diseño XML. Con Android 1.6, nada de esto es necesario. Todo lo que usted tiene que hacer es declarar un método público en su actividad para manejar el tecleo (el método debe tener un argumento de la visión)

Fuente

Siempre lo he visto como una preferencia. No estoy seguro de que haya ninguna ventaja de rendimiento para cualquiera de los dos últimos métodos pueden ser un poco más rápido ya que no están creando objetos en tiempo de ejecución.

La primera opción aísla el código al botón único por lo que es muy fácil de depurar ya que sólo sabe que el código se ejecutará cuando se hace clic en ese botón. Sin embargo, muchos botones pueden hacer que los métodos de inicialización se expandan a tamaños grandes.

Los dos últimos métodos ponen todos los botones de manejo en un lugar que puede ser conveniente y más limpio a veces, pero con muchos botones que tiene que descifrar qué botón fue aprovechado por el usuario a través del método v.getId() .

La última opción le permite especificar fácilmente métodos específicos para botones específicos para que pueda separarlos de esa manera, pero de nuevo tendrá muchos métodos usados ​​para propósitos individuales.

Siempre he utilizado el método inline (clase anónima) para las ventanas de diálogo personalizadas que tienen botones, ya que mantiene el código con el resto del diálogo en lugar de en una actividad o clase. Acabo de inicializar los botones del diálogo de encargo cuando onCreateDialog el onCreateDialog .

Implemento OnClickListener en la actividad si los botones están en la ventana principal.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.