Android – Cómo configurar un método con nombre en button.setOnClickListener ()

La mayoría de las muestras que veo parecen utilizar un método anónimo en una llamada como button.setOnClickListener (). En su lugar, me gustaría pasar un método definido en la clase de actividad en la que estoy trabajando. ¿Cuál es el equivalente de Java / Android del cableado del controlador de eventos siguiente en C #?

Button myButton = new Button(); myButton.Click += this.OnMyButtonClick; 

Dónde:

 private void OnMyButtonClick(object sender, EventArgs ea) { } 

Esencialmente, me gustaría reutilizar un método no anónimo para manejar el evento de clic de varios botones.

La respuesta de Roman Nurik es casi correcta. View.OnClickListener () es en realidad una interfaz. Por lo tanto, si su Actividad implementa OnClickListener, puede configurarla como el controlador de clics.

 public class Main extends Activity implements OnClickListener { public void onCreate() { button.setOnClickListener(this); button2.setOnClickListener(this); } public void onClick(View v) { //Handle based on which view was clicked. } } 

No hay delegados como en. Net, por lo que está atascado utilizando la función basada en la interfaz. En .Net puede especificar una función diferente mediante el uso de delegados.

El argumento a View.setOnClickListener debe ser una instancia de la clase View.OnClickListener (una clase interna de la clase View ). Para su caso de uso, puede mantener una instancia de esta clase interna en una variable y luego pasarla, al igual que:

 View.OnClickListener clickListener = new OnClickListener() { public void onClick(View v) { // do something here } }; myButton.setOnClickListener(clickListener); myButton2.setOnClickListener(clickListener); 

Si necesita este listener a través de múltiples subrutinas / métodos, puede almacenarlo como una variable miembro en su clase de actividad.

La firma del método tendrá que ser este …

 public void onMyButtonClick(View view){ } 

Si no está utilizando botones dinámicos, puede configurar el evento "onClick" del diseñador a "onMyButtonClick". Así es como lo hago para los botones estáticos en una pantalla. Fue más fácil para mí relacionarlo con C #.

  • Escucha los cambios de volumen en Android
  • Mejor manera de manejar eventos en Android
  • Prácticas recomendadas para la implementación de Android onClickListener
  • El evento LongClick ocurre demasiado rápido. ¿Cómo puedo aumentar el tiempo de clic requerido para activarlo?
  • Android: maneja eventos de teclado virtual y físico
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.