Página Principal

sábado, 23 de abril de 2016

Capturar evento de botón con setOnClickListener

Hola, En esta entrada mostrare algo simple pero útil, que le dará claridad y prolijidad a sus códigos, tanto para ustedes como para el que lo intente seguir, para un posible mantenimiento o lo que sea.

Esto esta apuntado a gente que se esta iniciando en el mundo de programación en android.

Cuando nos enseñaban android por primera vez, nos muestran que para capturar eventos debemos implementar OnClickListener, luego hacer la funcion onClick(View v) y dentro de ella hacer lo que se haga con el botón.. pero ¿que pasa si tenes mas de un botón? hay que degenerar el código con tantos if como botones tenga. O un Switch si son muchísimos.

Esta practica que les pasare a explicar hay que hacerlo para cada botón que vinculemos con el layout.

Así es como nos enseñan por primera vez




public class LoginActividad extends Activity implements OnClickListener{
 
 TextView tvUsuarioRegistro;
 EditText etNombre, etPass;
 Button bEntrar;
 Usuario usuario;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.ini_login);
  
  tvUsuarioRegistro = (TextView) findViewById(R.id.tvUsuarioRegistroClic);
  etNombre = (EditText) findViewById(R.id.etUsuarioNombre);
  etPass = (EditText) findViewById(R.id.etUsuarioPass);
  bEntrar = (Button) findViewById(R.id.btUsuarioEntrar);

  bEntrar.setOnClickListener(this);
  tvUsuarioRegistro.setOnClickListener(this);
  
  
 
  @Override
  public void onClick(View v) {
    if(v.getId()==findViewById(R.id.btUsuarioEntrar).getId()){
     
     //Aqui va lo que el boton debe hacer, una vez presionado  
    }
    if(v.getId()==findViewById(R.id.tvUsuarioRegistroClic).getId()){
     
     Intent actividad = new Intent(LoginActividad.this, RegistroActividad.class);
    startActivity(actividad);  
    }
           
  }  
 }
}
 

Y así es deberia;



public class LoginActividad extends Activity {
 
 TextView tvUsuarioRegistro;
 EditText etNombre, etPass;
 Button bEntrar;
 Usuario usuario;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.ini_login);
  
  tvUsuarioRegistro = (TextView) findViewById(R.id.tvUsuarioRegistroClic);
  etNombre = (EditText) findViewById(R.id.etUsuarioNombre);
  etPass = (EditText) findViewById(R.id.etUsuarioPass);
  bEntrar = (Button) findViewById(R.id.btUsuarioEntrar);

  bEntrar.setOnClickListener(new OnClickListener() {
 
   @Override
   public void onClick(View v) {
    
    //Aqui va lo que el boton debe hacer, una vez presionado       
   }  
  }); 
  tvUsuarioRegistro.setOnClickListener(new OnClickListener() {

   @Override
   public void onClick(View v) {
    Intent actividad = new Intent(LoginActividad.this, RegistroActividad.class);
    startActivity(actividad); 
   }  
  });
 }
}

No es que sea mas sencillo, ni nos ahorraremos de escribir, pero la claridad y prolijidad suma a la hora de mantener un código

Espero que les sirva o no, dependerá de como se sienta mas cómodo cada uno.
Un saludo

No hay comentarios:

Publicar un comentario