19 Agosto, 2012 a las 20:04

Hasta ahora hemos visto como ejecutar acciones durante la carga de el Activity o ventana principal de nuestra aplicación, pero obviamente un programa precisa de una interacción con el usuario, el usuario debe poder pulsar en algunos lugares, introducir texto y realizar acciones sobre la interfaz del programa, para ello Android nos permite asignar eventos a los diferentes elementos de nuestro programa.

Hoy vamos a ver el elemento mas sencillo de todos, el evento OnClick, si ya habéis programado alguna vez en lenguajes como JavaScript o VisualBasic os sonará, es el evento que se produce cuando un elemento es pulsado una vez y nos servirá como base para familiarizarnos con el resto.

Para nuestro primer ejemplo debemos crear un nuevo proyecto en cuyo activity incluiremos un botón llamado btPrincipal y un TextView con id tvPrincipal y con un texto en blanco. En lo que va a consistir el ejemplo es en escribir “Hola mundo” dentro de tvPrincipal en el momento es pulsado el botón.

Asignar el evento OnClick a un botón en Android.

MainActivity.java

public class MainActivity extends Activity implements OnClickListener {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button boton = (Button) findViewById(R.id.btPrincipal); //Definimos el boton
        boton.setOnClickListener(this); //Le asignamos el evento onclick

    }

	public void onClick(View control_pulsado) {
		TextView campo_texto = (TextView)findViewById(R.id.tvPrincipal); //Definimos el campo de texto
		campo_texto.setText("Hola mundo"); //Cambiamos su contenido

	}

 }

Como vemos en la primera línea implementamos el metodo OnClickListener, si quisieramos usar otro evento, por ejemplo el OnTouch lo añadiriamos también con OnTouchListener, etc.

En la línea 9 asignamos el evento OnClick al boton, desde este momento se ejecutará la función onClick cada vez que este sea pulsado. La razón por la que pasamos el argumento this la veremos mas adelante.

A continuación en la función onClick cambiamos el texto como vimos en la tercera entrega del curso.

La razón por la que se pasa el argumento this es simple, imagina que tenemos dos botones, el btPrincipal queremos que cambie el texto a “Hola mundo” y el btSecundario queremos que ponga “Hasta luego mundo”, a ambos le asignamos el evento onClickListener, por lo cual la función onClick se va a ejecutar se pulse el botón que se pulse, por lo que es la propia función onClick la que debe averiguar por quién ha sido llamada, al incluir this, podemos diferenciar el botón con un simple condicional

	public void onClick(View control_pulsado) {
		TextView campo_texto = (TextView)findViewById(R.id.tvPrincipal); //Definimos el campo de texto
		if(control_pulsado.getId() == R.id.btPrincipal){ //Si se ha pulsado btPrincipal
			campo_texto.setText("Hola mundo"); //Escribimos Hola Mundo
		}else if(control_pulsado.getId() == R.id.btSecundario){
			campo_texto.setText("Hasta luego mundo"); //Escribimos Hasta luego mundo
		}
	}

En la próxima entrega veremos como crear nuevas ventanas o activitys en Android y las diferencias con respecto a las existentes en otros sistemas operativos.

Acerca de Miguel Díaz

Informático, enamorado de la programación, diseño Web y el deporte.
Categorías: Android, Programación. Etiquetas: , , , , , , , , , .

6 comentarios en Programación en Android para torpes (IV) – Asignar eventos a elementos

  1.  pablo dice:

    Hola Miguel, estaria genial otro tutorial para ActivityforResult y saber cómo cambiar el texto de un TextView en la principal según qué botón pulsas en la secundaria. Ejemplo: si pulsas el botón 1 pone un texto, si pulsas el botón 2 pone otro y así sucesivamente. Saludos y enhorabuena por los tutoriales ;)

  2.  pablo dice:

    StartActivityforResult queria decir xD

    •  Miguel Díaz dice:

      Hola, hare un tutorial que explique todo el ciclo de vida de una aplicación de android y ahi lo explicaré bien, pero para que salgas del paso lo que puedes hacer es declarar una varible global que cambie al pulsar el boton, por ejemplo una boleana “boton_pulsado”

      Luego en el onResume del activity haces una comprobación de esa variable y dependiendo de su estado pones un texto u otro.

  3.  Ale dice:

    Hola Miguel, yo lo tengo hecho de esta forma pero al momento de abrir el emulador, me dice que la aplicacion debe cerrarse y en el log me aparece que no pudo instanciar la clase. Puede ser porque este usando mal el evento del boton?

    public class HolaUsuario extends Activity {

    final EditText txtNombre = (EditText) findViewById(R.id.TxtNombre);
    final Button btnHola = (Button) findViewById(R.id.BtnHola);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.holausuario);

    btnHola.setOnClickListener(new OnClickListener() {

    public void onClick(View v) {
    Intent intent = new Intent(HolaUsuario.this, FrmMensaje.class);

    Bundle bundle = new Bundle();
    bundle.putString(“NOMBRE”, txtNombre.getText().toString());
    intent.putExtras(bundle);

    startActivity(intent);
    }
    });
    }

  4.  mauricio dice:

    Por favor ayundenme, me gustaria mover una imagen hacia arriba mientras presiono un boton y al momento de soltar el boton, esta imagen se detenga.

  5.  Eduardo dice:

    Puede una imagen tener evento onclick?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *