miércoles, 28 de enero de 2015

OnClick en programación Android

Hoy mostraré como capturar el click en un botón o vista en Android (TextView, ImageView, etc) todo esto mediante el método de escucha de evento OnClick. 

Este métodos nos permite capturar los clicks en determinadas vistas comúnmente botones, para ejecutar ciertas partes de nuestro código fuente y de esta forma realizar las acciones que queramos.

La práctica de hoy será muy simple un botón contador de clicks en Android.
Lo que haremos es agregar el botón el botón en nuestro layout principal y hacer la asociación correspondiente con su variable en Java. Para aquellos que no saben como hacer dicha asociación de elementos XML a variables en Java click aquí.

Códigos actuales.

Código XML



    

Código JAVA

package com.example.zasapp2.zasapp2;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.widget.Button;

public class ZASApp2MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_zasapp2_main);
        Button boton1 = (Button)findViewById(R.id.button1);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_zasapp2_main, menu);
        return true;
    }
}
El código actual solo asocia el elemento XML a la variable correspondiente en java, en este caso un boton llamado boton1.

Implementación de onClick

Lo siguiente es implementar el evento setOnClickListener en el botón esto para que dicho botón escuche los clicks que recibe. Esto se hace con el siguiente código.
boton1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                
            }
        });
A los IDE como Andriod Studio o Eclipse facilitan mucho la escritura de este tipo de métodos por el auto-completado, ahora cada vez que el botón sea pulsado este método lo detectará y ejecutará todo el código que este escrito dentro de este, la parte donde escribiremos las acciones a realizar es dentro de las llaves del método onClick que contiene un atributo View llamado view(el nombre puede cambiar puede ser v, arg0, etc).

Bien procedemos a escribir el código contador, es algo muy simple declarar una variable entero fuera del método onClick para que no se reinicie cada vez que se pulsa el botón y dentro del método onClick un autoincremental en 1, también necesitaremos mostrar el resultado en el botón con el método setText(variable); si quieres ver el pequeño tutorial sobre setText click aquí.

Código final JAVA

package com.example.zasapp2.zasapp2;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;

public class ZASApp2MainActivity extends ActionBarActivity {
    int clicks = 0; /*Declarado como variable "global" dentro de Activity
                     para ser usada en el metodo onClick esto evitara que
                     la variable se vuelva a cero cada vez que se da click
                     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_zasapp2_main);
        final Button boton1 = (Button)findViewById(R.id.button1);
        boton1.setText("No has pulsado el boton");
        boton1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
            clicks++;
            boton1.setText("Has pulsado el boton "+clicks+" veces");
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_zasapp2_main, menu);
        return true;
    }
}

El botón mostrará inicialmente un mensaje "No has pulsado el botón" pero al pulsar el botón ejecutará el código dentro de onClick y el mensaje cambiará por "Has pulsado el botón N veces".

Los resultados:


A partir de esto se pueden realizar gran cantidad de tareas, al pulsar un botón o elemento en el Layout. No olvides dejar tus dudas y/o comentarios, si te ha gustado y/o servido este tutorial recuerda seguirnos en las redes sociales y compratir con tus amigos.

8 comentarios:

  1. Si cierro y abro la papa como hago para q recuerde las 27 veces

    ResponderEliminar
    Respuestas
    1. Tendrías que tener una base de datos en la que hayas creado una tabla y guardar el dato emn na de las columnas.

      Eliminar
    2. Así es, lo que menciona hurdi es correcto, o también puedes hacer uso de SharedPreferences para guardar pequeños identificadores con algún valor
      Saludos!

      Eliminar
    3. Así es, lo que menciona hurdi es correcto, o también puedes hacer uso de SharedPreferences para guardar pequeños identificadores con algún valor
      Saludos!

      Eliminar
  2. Gracias, acabas de salvar mi proyecto de la escuela :'v

    ResponderEliminar
  3. no me funciona me da error y cuando arranca la aplicacion me dice que desafortunadamente la app se ha parado :(

    ResponderEliminar