15 Agosto, 2012 a las 20:52

Y en esta entrega empezamos con los códigos, nada complicado pero necesario especialmente si vienes de lenguajes sencillos como VB.Net o C#. Como se ha dicho en las anteriores entregas es necesario conocer algún lenguaje de programación orientado a objetos, preferiblemente Java pues es el usado en Android.

Además si no has leído las entregas anteriores este es el momento:

Hoy veremos como modificar los diferentes elementos gráficos (contenedores de imagen, etiquetas de texto, botones, etc) en tiempo de ejecución. Si vienes de otros entornos como .net, verás que es muy similar pero con algunas variaciones, por ejemplo a los elementos de un Activity se les llama View en lugar de elementos.

En nuestro primer ejemplo tendremos un Activity que contendrá un TextView llamado “caja_de_texto”, por lo que nuestro xml será algo así:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/caja_de_texto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/hello_world"
        tools:context=".MainActivity" />

</RelativeLayout>

Como veis es simple, un textview con el texto “Hello World”. Es importante que veais la línea que dice android:id la cual define el nombre o id del view. Sin ello no podremos realizar cambios a posteriori.
Ahora vamos a explicar las partes de las que costa MainActivity.java

package com.example.ejemplocursoiii;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

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

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

Básicamente primero importa algunas de las API de android, posteriormente nos encontramos la clase referente a la actividad, que consta de dos funciones principales, onCreate y onCreateoptionsMenu.

La opción onCreate es ejecutada cuando se crea la actividad, es similar al OnLoad de .Net. Por otro lado onCreateOptionsmenu se ejecuta cuando se pulsa el botón de menús.

En nuestro caso vamos a modificar el textview al cargar la aplicación, de forma que nos diga la hora que es, para ello nos pondremos dentro de la funcion onCreate y la dejaremos de esta forma:

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

        //Definimos el objeto texto a partir de el elemento con id caja_de_texto
        TextView texto = (TextView)findViewById(R.id.caja_de_texto);

        Date fecha = new java.util.Date(); //manejador de fechas

        //Cambiamos el texto
        texto.setText(fecha.getHours()+":"+fecha.getMinutes());
    }

Creo que el ejemplo es bastante claro, en la sexta línea crearemos el objeto “texto” este nos servirá para manejar el view, la razón por la que se usa el modificador (TextView) es que la función findViewbyId nos devuelve un elemento de tipo View y no TextView, añadiendo este modificador lo convertiremos al adecuado.

Posteriormente, para cambiar el texto del elemento usaremos la función .setText(string) en la cual figura la hora del sistema aunque podemos poner cualquier otro valor de tipo String.

En la siguiente entrega veremos como llamar a los diferentes eventos onClick, onTouch, etc para poder ejecutar código en momentos diferentes al onCreate y onCreateoptionsMenu.

Acerca de Miguel Díaz

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

4 comentarios en Programación en Android para torpes (III) – Modificando los elementos de un Activity en tiempo de ejecución.

  1.  Jorge Campuzano dice:

    Hola Miguel
    Esta buena su pagina- Para torpes jajaja

    El java es complicado…

    Sucede que cuando se trabaja en sistemas complejos no vasta con hacer un par de sumas o un hello world.
    Entonces … Si vas a tener que escribir un testamento para cada mensaje que quieras visualizar, un trabajo simple se convertirá en pesadilla.

    La verdad que hasta ahora, todavía no encuentro viable a java.

    Pero seguiré intentando… :D

  2.  Anas dice:

    Al crear una nueva aplicacion no me crea el Activity_Main.xml en la carpeta Layout ni el archivo de java ayuda por favor

  3.  Edgar dice:

    Hola
    De Gran ayuda
    y si quiero llenar el textview con la fecha y hora?
    Gracias

  4.  enrique dice:

    hola. ¿Sabrias como podria modificar el texto de un elemento del formulario desde otra clase que no es Activity?

Deja un comentario

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