lunes, 19 de mayo de 2014

Evento onClick Android

Evento de Click ( onClick ) en botones de Android 


(Extraído de: https://www.lastdragon.net/?p=735,  
att: PBM, un agradecimiento para el autor) 

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” />


No hay comentarios.:

Publicar un comentario