En mis esfuerzos de evangelización por la programación en Android he encontrado que algunas personas tienen problemas con cosas como el Evento de Click muy básico para cualquier botón en cualquier GUI. Esto es por que se confunden ya que al googlear aparecen al menos 2 formas de hacer lo mismo.
Estas formas de hacer lo mismo dependen de lo que quiere hacer el programador.
En mi caso muy particular a mi me gusta controlar todo lo más posible, excepciones, eventos, etc. Por lo que yo trato siempre de programar todo en código, por todo me refiero a lo ejecutable. Algunas reglas de negocios simplemente nunca se deben programar como hardcode; por lo tanto yo uso 2 formas para manejar eventos de Click la completa en donde hago las implementaciones y las herencias necesarias o la rápida donde simplemente creó un método rápido y le digo al botón creado desde la actividad que maneje el evento de click. Esto último se hace con menos código y mucho más rápido pero no debe usarse en producción, el código queda menos legible
El código completo manejado desde JAVA
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.app.Activity;public class MainActivity extends Activity implements
OnClickListener {@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button boton = (Button) findViewById(R.id.button1);
boton.setOnClickListener(this);
Button boton2 = (Button) findViewById(R.id.button2);
boton2.setOnClickListener(this);
Button boton3 = (Button) findViewById(R.id.button3);
boton3.setOnClickListener(this);
}
@Override
public void onClick (View v)
{
// El boton uno cambiara su
etiqueta sin importar que boton se le de click
Button boton = (Button)
findViewById(R.id.button1);
boton.setText(“Click a un boton
sin controlar la fuente del click”);
// Para tener control se
condiciona la identificacion del boton al que se le dio click
// de estaforma solo se ejecuta
el codigo correspondiente a ese boton
if (v.getId() == R.id.button2) {
((TextView)v).setText(“Evento onClick controlado del boton 2”);
}
if (v.getId() == R.id.button3) {
((TextView)v).setText(“Evento onClick controlado del boton 3”);
}
}
}
El código donde el evento lo maneja la actividad y se declara en el XML de la misma
Parte Java
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.app.Activity;public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void clickBoton1 (View v) {
Button boton = (Button)
findViewById(R.id.button1);
boton.setText(“Evento Click
controlado por la Actividad, Boton 1”);
}public void clickBoton2 (View v) {
Button boton = (Button)
findViewById(R.id.button2);
boton.setText(“Evento Click
controlado por la Actividad, Boton 2”);
}public void clickBoton3 (View v) {
Button boton = (Button)
findViewById(R.id.button3);
boton.setText(“Evento Click
controlado por la Actividad, Boton 3”);
}}
Parte XML
<Button
android:id=”@+id/button1″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentLeft=”true”
android:layout_alignParentRight=”true”
android:layout_alignParentTop=”true”
android:layout_marginTop=”81dp”
android:onClick=”clickBoton1″
android:text=”Dame Click aka
TAP” />
Thank you man
excelente hermano muchas gracias por tu ayuda
Hola, tengo una duda, puedo ejecutar una funcion cuando se toca cualquier parte de la pantalla, en mi caso solo tendre una imagen en todo el layout
bien explicado :v
Como ejecuto por código el evento click sin intervención del usuario. Similar a button.PerformClick(); en c# y en vb.