Tutorial android 7: Eventos, OnClickListener para implementar un escuchador de eventos en un Boton

Tutorial Android: eventos con OnClickListener implementado en un boton

Los eventos los encontramos en muchos lenguajes de programación, para ello en Android tenemos disponibles un gran numero distinto de eventos que podemos tener, desde el touch o clicks, hasta eventos generados por movimientos en un accelerometro, termometro u otros sensores de los dispositivos Android.

En el siguiente video podras encontrar como poder implementar uno de los eventos mas simples, el OnClickListener, para escuchar eventos de clicks realizados sobre un boton.

Videotutorial:

Codigo de apoyo:

package com.practicaOnclick;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;

public class PracticaOnClickListenerActivity extends Activity implements OnClickListener{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        View boton = findViewById(R.id.botonID); 
        boton.setOnClickListener(this);
    }

	@Override
	public void onClick(View v) {
		if(v.getId()==findViewById(R.id.botonID).getId())
		{
			TextView texto = (TextView)findViewById(R.id.textoID);
			texto.setText("Hola que tal, haz oprimido el boton");
		}
		
	}
}

XML del archivo main.xml(Layout)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textoID"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

    <Button
        android:id="@+id/botonID"
        android:layout_width="164dp"
        android:layout_height="wrap_content"
        android:text="Button" />

</LinearLayout>

Acerca del autor:

Mi nombre es Jorge Villalobos, soy Colombiano de nacimiento y resido en México desde 2005,actualmente soy el creador de codigoprogramacion.com Soy ingeniero en tecnologías de información y comunicaciones y trabajo de tiempo completo desarrollando aplicaciones web. En general me considero un tipo normal, me gusta salir, divertirme, y uno de mis hobbies es programar y hacer tutoriales para compartir conocimiento, me gusta la pizza, el ajedrez y tomar una que otra cerveza los fines de semana. Espero que este proyecto ayude a ayudar a los demás.

Twitter del autor:

21 comments

  1. lizkano says:

    ola necesito ayuda con este problema:

    Usted fue contratado por una empresa para desarrollar un software de gestión de actividades del equipo comercial para un negocio.
    Las entidades definidas para este software son:
    o Persona: Es la entidad que representa una persona en particular con la cual se podrán hacer actividades y estarán o no asignadas a un negocio.
    o Organización: Es la entidad que representa una empresa con la cual se podrán hacer actividades y estarán o no asignadas a un negocio.
    o Negocio: Es la entidad que representa un negocio, puede tener asignado personas u organizaciones.
    o Actividad: Es la entidad que representa una actividad que se puede realizar con una persona, un negocio, o una organización.
    Las funcionalidades que debe cumplir el software son las siguientes:
    o El software permitirá registrar, consultar y modificar los datos de una persona. Los datos de una persona son: nombre, teléfono y correo electrónico.
    o El software permitirá registrar, consultar y modificar los datos de una organización. Los datos de una organización son: nombre, dirección y teléfono.
    o El software permitirá registrar, consultar y modificar los datos de un negocio. Los datos de un negocio son: título, descripción, nombre de la organización, valor, nombre de la persona, fecha estimada de cierre y estado.
    o El software permitirá registrar, consultar y modificar una actividad. Los datos de una actividad son: descripción, tipo, fecha, hora, duración, nombre de la persona, nombre de la organización y nombre del negocio.
    Datos adicionales:
    o Todos los datos de las entidades son cadena de textos excepto el valor del negocio, que es numérico de tipo doble.
    Realizar la definición de clases para cada entidad de la siguiente manera:
    o Nombre Clase: Se define el nombre de la clase.
    o Atributos: Se define los atributos de la clase con su respectivo tipo de dato.

  2. Tengo esta e baluacion gracias por su alluda
    Durante la presente actividad, definiremos las entidades participantes en el sistema de información de gestión de actividades del área comercial de una empresa. La planeación y la definición de las características de nuestro sistema es una actividad clave que debemos hacer siempre antes de iniciar cualquier desarrollo. Aquí llevaremos a cabo este proceso.

    Al finalizar este proyecto, usted habrá puesto en práctica lo siguiente:

    Describir de manera general la historia de los diferentes lenguajes de programación
    Describir los conceptos claves de la programación orientada a objetos
    Conocer la terminología relacionada con la programación orientada a objetos
    Describir y conocer los conceptos de encapsulación, abstracción, herencia y polimorfismo
    Describir los diferentes métodos de búsqueda y ordenamiento
    Conocer y describir las colecciones: Listas, Conjuntos y Mapas y las estructuras de datos
    Describir las características y definición de la clase Arrays

    Instrucciones para completar el proyecto
    Paso 1

    Usted fue contratado por una empresa para desarrollar un software de gestión de actividades del equipo comercial para un negocio.

    Las entidades definidas para este software son:

    Persona: Es la entidad que representa una persona en particular con la cual se podrán hacer actividades y estarán o no asignadas a un negocio.
    Organización: Es la entidad que representa una empresa con la cual se podrán hacer actividades y estarán o no asignadas a un negocio.
    Negocio: Es la entidad que representa un negocio, puede tener asignado personas u organizaciones.
    Actividad: Es la entidad que representa una actividad que se puede realizar con una persona, un negocio, o una organización.

    Las funcionalidades que debe cumplir el software son las siguientes:

    El software permitirá registrar, consultar y modificar los datos de una persona. Los datos de una persona son: nombre, teléfono y correo electrónico.
    El software permitirá registrar, consultar y modificar los datos de una organización. Los datos de una organización son: nombre, dirección y teléfono.
    El software permitirá registrar, consultar y modificar los datos de un negocio. Los datos de un negocio son: título, descripción, nombre de la organización, valor, nombre de la persona, fecha estimada de cierre y estado.
    El software permitirá registrar, consultar y modificar una actividad. Los datos de una actividad son: descripción, tipo, fecha, hora, duración, nombre de la persona, nombre de la organización y nombre del negocio.

    Datos adicionales:

    Todos los datos de las entidades son cadena de textos excepto el valor del negocio, que es numérico de tipo doble.

    Realizar la definición de clases para cada entidad de la siguiente manera:

    Nombre Clase: Se define el nombre de la clase.
    Atributos: Se define los atributos de la clase con su respectivo tipo de dato.

    Ej:

    Entidad Animal

    Nombre Clase: Animal

    Atributos:

    String nombre
    String tipo
    int numeroPatas

    Paso 1

    De acuerdo a la definición de clases de cada una de las entidades que se identificaron en el paso 1, codificar dichas clases con sus atributos y modificadores de acceso private, generando los métodos Getters y Setters de cada atributo.
    Instrucciones para subir el proyecto

    Una vez haya completado el proyecto, tiene que crear un folder comprimido y subirlo al curso. Siga los siguientes pasos para completar esta sección correctamente:

    Primero, tiene que cambiar el nombre al folder que contiene los documentos del proyecto. Utilice el siguiente formato: NombreDelCurso_ProyectoFinal_PrimerNombre_PrimerApellido.zip Es sumamente importante que el folder lleve su primer nombre y apellido para poder identificarlo correctamente.
    A continuación, debe de comprimir el folder.
    Para comprimir el folder en Windows (hacerlo ZIP): Deberá posicionarse sobre el folder o carpeta que quiera comprimir, dar clic con el botón derecho del ratón y seleccionar “Enviar a: \ Send to” y buscar la opción de “Carpeta comprimida (en zip) \ Compressed (zipped) Folder”.
    Para comprimir el folder en Mac (hacerlo ZIP): Deberá posicionarse sobre el folder o carpeta que quiera comprimir, dar clic mientras se oprime la tecla Control o dar clic con el botón derecho del ratón y seleccionar “Comprimir NombredelFolder \ Compress FolderName” en el menú contextual que aparece.
    Una vez haya comprimido el folder, lo tiene que subir al curso. Para subir el ZIP al curso, siga los siguientes pasos:
    Acceda la página Evaluación Final.
    Haga clic en Añadir envío.
    Agregue una descripción en la sección Texto en línea y adjunte el folder comprimido en la sección Envíos de archivo.
    Haga clic en Guardar cambios.

    Estatus de la entrega
    Número de intento Éste es el intento 1.
    Estatus de la entrega Enviado para calificar
    Estatus de calificación No calificado
    Criterio para calificar
    Especificaciones
    Experto: Las entidades definidas son las solicitadas. El estudiante propone entidades adicionales para el sistema de información del área comercial. —– Los tipos de datos solicitados son definidos adecuadamente. Se mejora los tipos de datos propuestos cambiándolos por unos mas adecuados. —– Los atributos de las clases son definidos adecuadamente. El estudiante propone nuevos tipos de datos adicionales a los usualmente asignados a este tipo de entidades. —– Los métodos “Getters” y “Setters” solicitados son definidos adecuadamente. El estudiante propone métodos adicinalesadicionales.
    34 puntos

    Avanzado: Las entidades definidas son las solicitadas. —– Se especifican los tipos de datos de manera correcta. —– Los atributos de las clases son definidos adecuadamente. —– Los métodos “Getters” y “Setters” solicitados son definidos adecuadamente.
    29 puntos

    Aprendiz: Las entidades definidas no son las solicitadas. Se definieron tres de cuatro de las entidades. —– Todos los tipos de datos se especificaron iguales. —– El estudiante omitió atributos básicos de las entidades. —– Hay errores en la definición de los métodos “Getters” y “Setters”.
    24 puntos

    Novato: Mas del 50% de las entidades no fueron definidas. —– Falta especificar algunos tipos de datos de acuerdo con lo solicitado para las entidades. —– Hay carencia de atributos básicos como ”nombre” para la clase persona. Se omiten mas del 50% de los atributos a definir. —– No se define alguno de los dósdos métodos solicitados.
    19 puntos

    Incumplimiento: Los criterios no se cumplen
    0 puntos
    Legibilidad
    Experto: El código muestra excelente organización, y es muy fácil de seguir y entender. —– El uso de los espacios en blanco, líneas de separación e identación muestra un alto nivel de sofisticación y refinamiento en la escritura del código fuente. —– Excelente uso de las variables, asignando nombres a las mismas que ayudan a entender su propósito. —– Las funciones están bien definidas y usadas.
    33 puntos

    Avanzado: El código está organizado, se puede seguir y entender. —– El uso de los espacios en blanco, líneas de separación e identación sigue las mejores practicas. —– Las variables son definidas y utilizadas adecuadamente. —– Las funciones son definidas y utilizadas adecuadamente.
    28 puntos

    Aprendiz: El código está menos organizado, se puede seguir y entender con dificultad. —– El uso de los espacios en blanco, líneas de separación e identación no está implementado de la mejor manera. —– Las variables están definidas pero no se usan adecuadamente. —– Las funciones son definidas, pero algunas no se usan en la ejecución del programa o aplicación.
    23 puntos

    Novato: El código no está organizado, es muy difícil de seguir y entender. —– El uso de los espacios en blanco, líneas de separación e identación se usan muy poco. —– Los nombres de las variables no identifican con el uso de las mismas. —– Algunas funciones se definen, pero no son usadas adecuadamente.
    18 puntos

    Incumplimiento: El código presenta tal desorganización, que impide que la aplicación se ejecute. —– El uso de los espacios en blanco, líneas de separación e identación NO se usan para nada. —– No hay uso de funciones.
    0 puntos
    Eficiencia en el código
    Experto: El código fuente es extremadamente fácil de editar y mantener.
    33 puntos

    Avanzado: El código es fácil de seguir, editar y mantener.
    28 puntos

    Aprendiz: El código es editable y se puede mantener, pero puede mejorarse mucho más.
    23 puntos

    Novato: El código es muy complicado de seguir, editar y mantener.
    18 puntos

    Incumplimiento: El código es imposible de editar.
    0 puntos

  3. Nelson says:

    Muy buenos tus tutoriales me han servido de mucho GRACIAS SALUDOS

  4. silvi says:

    Necesito validad un editText que si el codigo ingresado existe me muestre “encontrado” y si no “no encontrado”, el problema es que quiero que esto se ejecute cuando se clic en siguiente del teclado virtual del dispositivo, como puedo decirle que al presionar siguente o enter me haga ejecute mi metodo?

  5. Felix says:

    Hola Jorge, soy nuevo en esto y estoy preparando una aplicación sensilla, lo que no puedo hacer es lo siguiente, tengo 15 botones repartidos con scrollview, y quisiera utilizar el valor del seleccionado, vale decir si pulso el boton uno, poder manipular libremente en otra parte de mi programa. Lo intente con un array y otras formas pero no logro sacar fuera de esta funcion el valor obtenido, para uzarlo en otros distintos calculos. También lo había puesto con una barra tipo seekbar, pero tampoco puedo exportar el valor otenido para utilizarlo libremente.
    Gracias.

  6. Juan says:

    Hola buen día, Quisiera saber si me puedes ayudar con proyecto. La duda que tengo es como hacer que la aplicación tenga un uso limite (por ejemplo que el usuario pueda ingresar 5 datos por día) te agradecería si me ayudaras con ejemplos o me pudieras explicar gracias.

  7. fjavier says:

    Muy bien explicado, podrias tener mas tutoriales ! eres muy bueno ! si dispones de mas no me importaria que me enviaras un correo diciendome donde los puedo ver o los enlaces
    Gracias

  8. Pablo says:

    Buenas Jorge quisiera pedirte un consejo tengo dos clases en android el tema es el siguiente supongamos que tienes la calculadora basica que hiciste en android como puedo hacer que el resultado de la suma de los dos atributos se vea en una clase distinta osea clase A tiene a+b pero quiero que el resultado lo muestre en la clase B en un textView podria por favor ayudarme gracias.

  9. edrei says:

    ESTA CHIDOS TUS VIDEOS JORGE V LLEGARAS TAN LEJOS TE LO ASEGURO :D

  10. Javier says:

    Hola amigos alguien de ustedes me puede explicar como hacer una aplicación para poder firmar con el dedo en la pantalla de en nuestro dispositivo.
    Es una tarea de la escuela y no se como hacerla…

  11. cindy says:

    Fue de una gran ayuda muchas graciassss¡¡

  12. Kelbis Ramirez says:

    Excelente tema. Me sirvió de mucha ayuda. Una explicación muy bien detallada y de forma sencilla. Gracias.

  13. Mauricio says:

    Hola, amigo.
    Quisiera saber como puedo hacer para que mi app simule el onClick de un Botón sin necesidad de que el usuario lo presione, se puede hacer esto o que pudiera hacer. Gracias por la ayuda.

  14. Oswaldo Gonzalez says:

    Jorge y ofreces servicios de programador freelance?

  15. Edgar says:

    Hola, no podrías hacer un vídeo en donde crees un reproductor musical con el botón aleatorio y pause.

  16. parcero!!!!!!! muchas gracias… yo tambn soy colombiano y creo que esta es la primera vez que comento en algo… gracias por este codigo… estaba tostado con mi final de POO ^_^

    (if(v.getId()==findViewById(R.id.botonID).getId()))
    le eche cabeza pero ni idea hasta que llegue a tu pag ^_^
    gracias nuevamente

  17. carlos says:

    hola, una pregunta, estoy creando un juego muy sencillo, no se como matar los procesos automáticamente cuando se pierde el juego.
    gracias de antemano.

  18. carlo says:

    hola gracias por los vídeos me han sido de mucha ayuda…

Leave a Reply to Pablo Cancel reply

Your email address will not be published. Required fields are marked *