Вы находитесь на странице: 1из 26

7/2/2014

Desarrollando una aplicacin Android sencilla | sgoliver.net blog

sgoliver.net blog
Pensamientos varios sobre programacin, Android, .NET y Java
Navigation

Desarrollando una aplicacin Android sencilla


por Sgoliver el 16/08/2010 en Android, Program acin

Despus de instalar nuestro entorno de desarrollo para Android y comentar la estructura bsica
de un proyecto y los diferentes componentes software que podemos utilizar ya es hora de empezar
a escribir algo de cdigo. Y como siempre lo mejor es empezar por escribir una aplicacin sencilla.
En un principio me plante analizar en este captulo el clsico Hola Mundo pero ms tarde me
pareci que se iban a quedar algunas cosas bsicas en el tintero. As que he versionado a mi
manera el Hola Mundo transformndolo en algo as como un Hola Usuario, que es igual de sencilla
pero aade un par de cosas interesantes de contar. La aplicacin constar de dos pantallas, por
un lado la pantalla principal que solicitar un nombre al usuario y una segunda pantalla en la que
se mostrar un mensaje personalizado para el usuario. As de sencillo e intil, pero aprenderemos
muchos conceptos bsicos, que para empezar no est mal.
Por dibujarlo para entender mejor lo que queremos conseguir, sera algo tan sencillo como lo
siguiente:

Vamos a partir del proyecto de ejemplo que creamos en un apartado anterior, al que casualmente
llamamos HolaUsuario.
Como ya vimos Eclipse haba creado por nosotros la estructura de carpetas del proyecto y todos
los ficheros necesarios de un Hola Mundo bsico, es decir, una sola pantalla donde se muestra
nicamente un mensaje fijo.
http://www.sgoliver.net/blog/?p=1316

1/26

7/2/2014

Desarrollando una aplicacin Android sencilla | sgoliver.net blog

Lo primero que vamos a hacer es disear nuestra pantalla principal modificando la que Eclipse nos
ha creado por defecto. Aunque ya lo hemos comentado de pasada, recordemos dnde y cmo se
define cada pantalla de la aplicacin. En Android, el diseo y la lgica de una pantalla estn
separados en dos ficheros distintos. Por un lado, en el fichero /res/layout/activity_main.xml
tendremos el diseo puramente visual de la pantalla definido como fichero XML y por otro lado, en
el fichero /src/paquete.java/MainActivity.java, encontraremos el cdigo java que
determina la lgica de la pantalla.
Vamos a modificar en primer lugar el aspecto de la ventana principal de la aplicacin aadiendo
los controles (views) que vemos en el esquema mostrado al principio del apartado. Para ello,
vamos a sustituir el contenido del fichero activity_main.xmlpor el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/LblNombre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/nombre" />
<EditText
android:id="@+id/TxtNombre"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text">
</EditText>
<Button
android:id="@+id/BtnHola"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hola" />
</LinearLayout>

En este XML se definen los elementos visuales que componen la interfaz de nuestra pantalla
principal y se especifican todas sus propiedades. No nos detendremos mucho por ahora en cada
detalle, pero expliquemos un poco lo que vemos en el fichero.
Lo primero que nos encontramos es un elemento LinearLayout. Los layout son elementos no
visibles que determinan cmo se van a distribuir en el espacio los controles que incluyamos en su
interior. Los programadores java, y ms concretamente de Swing, conocern este concepto
perfectamente. En este caso, un LinearLayoutdistribuir los controles simplemente uno tras otro
y en la orientacin que indique su propiedad android:orientation, que en este caso ser
vertical.

http://www.sgoliver.net/blog/?p=1316

2/26

7/2/2014

Desarrollando una aplicacin Android sencilla | sgoliver.net blog

Dentro del layout hemos incluido 3 controles: una etiqueta (TextView), un cuadro de texto
(EditText), y un botn (Button). En todos ellos hemos establecido las siguientes propiedades:
android:id. ID del control, con el que podremos identificarlo ms tarde en nuestro cdigo.
Vemos que el identificador lo escribimos precedido de @+id/. Esto tendr como efecto que
al compilarse el proyecto se genere automticamente una nueva constante en la clase Rpara
dicho control. As, por ejemplo, como al cuadro de texto le hemos asignado el ID TxtNombre,
podremos ms tarde acceder al l desde nuestro cdigo haciendo referencia a la constante
R.id.TxtNombre.
android:layout_heighty android:layout_width. Dimensiones del control con respecto
al layout que lo contiene. Esta propiedad tomar normalmente los valores wrap_content
para indicar que las dimensiones del control se ajustarn al contenido del mismo, o bien
match_parent para indicar que el ancho o el alto del control se ajustar al ancho o alto del
layout contenedor respectivamente.
Adems de estas propiedades comunes a casi todos los controles que utilizaremos, en el cuadro
de texto hemos establecido tambin la propiedad android:inputType, que indica qu tipo de
contenido va a albergar el control, en este caso texto normal (valor text), aunque podra haber
sido una contrasea (textPassword), un telfono (phone), una fecha (date), .
Por ltimo, en la etiqueta y el botn hemos establecido la propiedad android:text, que indica el
texto que aparece en el control. Y aqu nos vamos a detener un poco, ya que tenemos dos
alternativas a la hora de hacer esto. En Android, el texto de un control se puede especificar
directamente como valor de la propiedad android:text, o bien utilizar alguna de las cadenas de
texto definidas en los recursos del proyecto (como ya vimos, en el fichero strings.xml), en cuyo
caso indicaremos como valor de la propiedad android:textsu identificador precedido del prefijo
@string/. Dicho de otra forma, la primera alternativa habra sido indicar directamente el texto
como valor de la propiedad, por ejemplo en la etiqueta de esta forma:
1
2
3
4
5

<TextView
android:id="@+id/LblNombre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Escribre tu nombre:" />

Y la segunda alternativa, la utilizada en el ejemplo, consistira en definir primero una nueva cadena
de texto en el fichero de recursos /res/values/strings.xml, por ejemplo con identificador
nombre y valor Escribe tu nombre:.
1
2
3
4
5
6
7
8
9

<resources>
...
<string name="nombre">Escribe tu nombre:</string>
...
</resources>

http://www.sgoliver.net/blog/?p=1316

3/26

7/2/2014

Desarrollando una aplicacin Android sencilla | sgoliver.net blog

Y posteriormente indicar el identificador de la cadena como valor de la propiedad android:text,


siempre precedido del prefijo @string/, de la siguiente forma:
1
2
3
4
5

<TextView
android:id="@+id/LblNombre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/nombre" />

Esta segunda alternativa nos permite tener perfectamente localizadas y agrupadas todas las
cadenas de texto utilizadas en la aplicacin, lo que nos podra facilitar por ejemplo la traduccin de
la aplicacin a otro idioma.Con esto ya tenemos definida la presentacin visual de nuestra ventana
principal de la aplicacin. De igual forma definiremos la interfaz de la segunda pantalla, creando un
nuevo fichero llamado activity_saludo.xml, y aadiendo esta vez tan solo una etiqueta
(TextView) para mostrar el mensaje personalizado al usuario.
Para aadir el fichero, pulsaremos el botn derecho del ratn sobre la carpeta de recursos
/res/layouty pulsaremos la opcin New Android XML file.

En el cuadro de dilogo que nos aparece indicaremos como tipo de recurso Layout, indicaremos
el nombre del fichero (con extensin .xml) y como elemento raz seleccionaremos LinearLayout.
Finalmente pulsamos Finish para crear el fichero.

http://www.sgoliver.net/blog/?p=1316

4/26

7/2/2014

Desarrollando una aplicacin Android sencilla | sgoliver.net blog

Eclipse crear entonces el nuevo fichero y lo abrir en el editor grfico, aunque como ya
indicamos, nosotros accederemos a la solapa de cdigo para modificar directamente el contenido
XML del fichero.
Para esta segunda pantalla el cdigo que incluiramos sera el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/TxtSaludo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="" />
</LinearLayout>

Una vez definida la interfaz de las pantallas de la aplicacin deberemos implementar la lgica de la
misma. Como ya hemos comentado, la lgica de la aplicacin se definir en ficheros java
independientes. Para la pantalla principal ya tenemos creado un fichero por defecto llamado
MainActivity.java. Empecemos por comentar su cdigo por defecto:
1
2
3
4
5
6
7
8
9

package net.sgoliver.android.holausuario;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends Activity {
@Override

http://www.sgoliver.net/blog/?p=1316

5/26

7/2/2014

Desarrollando una aplicacin Android sencilla | sgoliver.net blog

10
11
12
13
14
15
16
17
18
19
20

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;
}

Como ya vimos en un apartado anterior, las diferentes pantallas de una aplicacin Android se
definen mediante objetos de tipo Activity. Por tanto, lo primero que encontramos en nuestro
fichero java es la definicin de una nueva clase MainActivityque extiende a Activity. El nico
mtodo que modificaremos de esta clase ser el mtodo onCreate(), llamado cuando se crea por
primera vez la actividad. En este mtodo lo nico que encontramos en principio, adems de la
llamada a su implementacin en la clase padre, es la llamada al mtodo
setContentView(R.layout.activity_main). Con esta llamada estaremos indicando a Android
que debe establecer como interfaz grfica de esta actividad la definida en el recurso
R.layout.activity_main, que no es ms que la que hemos especificado en el fichero
/res/layout/activity_main.xml. Una vez ms vemos la utilidad de las diferentes constantes
de recursos creadas automticamente en la clase Ral compilar el proyecto.
Adems del mtodo onCreate(), vemos que tambin se sobrescribe el mtodo
onCreateOptionsMenu(), que se utiliza para definir mens en la aplicacin. Por el momento no
tocaremos este mtodo, ms adelante en el curso nos ocuparemos de este tema.
Ahora vamos a crear una nueva actividad para la segunda pantalla de la aplicacin anloga a sta
primera, para lo que crearemos una nueva clase FrmSaludoque extienda tambin de Activityy
que implemente el mtodo onCreate()pero indicando esta vez que utilice la interfaz definida para
la segunda pantalla en R.layout.activity_saludo.
Para ello, pulsaremos el botn derecho sobre la carpeta /src/tu.paquete.java/y
seleccionaremos la opcin de men New / Class.

En el cuadro de dilogo que nos aparece indicaremos el nombre (Name) de la nueva clase y su
clase padre (Superclass) como android.app.Activity.

http://www.sgoliver.net/blog/?p=1316

6/26

7/2/2014

Desarrollando una aplicacin Android sencilla | sgoliver.net blog

Pulsaremos Finish y Eclipse crear el nuevo fichero y lo abrir en el editor de cdigo java.
Modificaremos por ahora el cdigo de la clase para que quede algo anlogo a la actividad
principal:
1
2
3
4
5
6
7
8
9
10
11
12

package net.sgoliver.android.holausuario;
import android.app.Activity;
import android.os.Bundle;
public class FrmSaludo extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_saludo);
}
}

NOTA: Todos los pasos anteriores de creacin de una nueva pantalla (layout xml + clase java) se
puede realizar tambin mediante un asistente de Eclipse al que se accede mediante el men
contextual New / Other / Android / Android Activity. Sin embargo, he preferido explicarlo de esta
forma para que quedaran claros todos los pasos y elementos necesarios.
Sigamos. Por ahora, el cdigo incluido en estas clases lo nico que hace es generar la interfaz de
la actividad. A partir de aqu nosotros tendremos que incluir el resto de la lgica de la aplicacin.
Y vamos a empezar con la actividad principal MainActivity, obteniendo una referencia a los
diferentes controles de la interfaz que necesitemos manipular, en nuestro caso slo el cuadro de
texto y el botn. Para ello utilizaremos el mtodo findViewById()indicando el ID de cada
control, definidos como siempre en la clase R. Todo esto lo haremos dentro del mtodo
onCreate()de la clase MainActivity, justo a continuacin de la llamada a setContentView()
que ya comentamos:
http://www.sgoliver.net/blog/?p=1316

7/26

7/2/2014

Desarrollando una aplicacin Android sencilla | sgoliver.net blog

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

...
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
...
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Obtenemos una referencia a los controles de la interfaz
final EditText txtNombre = (EditText)findViewById(R.id.TxtNombre);
final Button btnHola = (Button)findViewById(R.id.BtnHola);
...
}

...

Como vemos, hemos aadido tambin varios importadicionales para tener acceso a todas las
clases utilizadas.
Una vez tenemos acceso a los diferentes controles, ya slo nos queda implementar las acciones a
tomar cuando pulsemos el botn de la pantalla. Para ello, continuando el cdigo anterior, y
siempre dentro del mtodo onCreate(), implementaremos el evento onClickde dicho botn,
veamos cmo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

...
import android.content.Intent;
...
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {

http://www.sgoliver.net/blog/?p=1316

...
//Obtenemos una referencia a los controles de la interfaz
final EditText txtNombre = (EditText)findViewById(R.id.TxtNombre);
final Button btnHola = (Button)findViewById(R.id.BtnHola);
//Implementamos el evento click del botn
btnHola.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//Creamos el Intent
8/26

7/2/2014

Desarrollando una aplicacin Android sencilla | sgoliver.net blog

23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

Intent intent =
new Intent(MainActivity.this, FrmSaludo.class);
//Creamos la informacin a pasar entre actividades
Bundle b = new Bundle();
b.putString("NOMBRE", txtNombre.getText().toString());
//Aadimos la informacin al intent
intent.putExtras(b);

});

//Iniciamos la nueva actividad


startActivity(intent);

}
...

Como ya indicamos en el apartado anterior, la comunicacin entre los distintos componentes y


aplicaciones en Android se realiza mediante intents, por lo que el primer paso ser crear un objeto
de este tipo. Existen varias variantes del constructor de la clase Intent, cada una de ellas dirigida
a unas determinadas acciones. En nuestro caso particular vamos a utilizar el intent para llamar a
una actividad desde otra actividad de la misma aplicacin, para lo que pasaremos a su constructor
una referencia a la propia actividad llamadora (MainActivity.this), y la clase de la actividad
llamada (FrmSaludo.class).
Si quisiramos tan slo mostrar una nueva actividad ya tan slo nos quedara llamar a
startActivity()pasndole como parmetro el intent creado. Pero en nuestro ejemplo
queremos tambin pasarle cierta informacin a la actividad llamada, concretamente el nombre que
introduzca el usuario en el cuadro de texto de la pantalla principal. Para hacer esto vamos a crear
un objeto Bundle, que puede contener una lista de pares clave-valor con toda la informacin a
pasar entre las actividades. En nuestro caso slo aadiremos un dato de tipo Stringmediante el
mtodo putString(clave, valor). Tras esto aadiremos la informacin al intent mediante el
mtodo putExtras(bundle).
Con esto hemos finalizado ya actividad principal de la aplicacin, por lo que pasaremos ya a la
secundaria. Comenzaremos de forma anloga a la anterior, ampliando el mtodo onCreate()
obteniendo las referencias a los objetos que manipularemos, esta vez slo la etiqueta de texto.
Tras esto viene lo ms interesante, debemos recuperar la informacin pasada desde la actividad
principal y asignarla como texto de la etiqueta. Para ello accederemos en primer lugar al intent que
ha originado la actividad actual mediante el mtodo getIntent()y recuperaremos su informacin
asociada (objeto Bundle) mediante el mtodo getExtras().
Hecho esto tan slo nos queda construir el texto de la etiqueta mediante su mtodo
setText(texto)y recuperando el valor de nuestra clave almacenada en el objeto Bundle
mediante getString(clave).
http://www.sgoliver.net/blog/?p=1316

9/26

7/2/2014

Desarrollando una aplicacin Android sencilla | sgoliver.net blog

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

package net.sgoliver.android.holausuario;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class FrmSaludo extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_saludo);
//Localizar los controles
TextView txtSaludo = (TextView)findViewById(R.id.TxtSaludo);
//Recuperamos la informacin pasada en el intent
Bundle bundle = this.getIntent().getExtras();

//Construimos el mensaje a mostrar


txtSaludo.setText("Hola " + bundle.getString("NOMBRE"));

Con esto hemos concluido la lgica de las dos pantallas de nuestra aplicacin y tan slo nos
queda un paso importante para finalizar nuestro desarrollo. Como ya indicamos en un apartado
anterior, toda aplicacin Android utiliza un fichero especial en formato XML
(AndroidManifest.xml) para definir, entre otras cosas, los diferentes elementos que la
componen. Por tanto, todas las actividades de nuestra aplicacin deben quedar convenientemente
recogidas en este fichero. La actividad principal ya debe aparecer puesto que se cre de forma
automtica al crear el nuevo proyecto Android, por lo que debemos aadir tan slo la segunda.
Para este ejemplo nos limitaremos a incluir la actividad en el XML mediante una nueva etiqueta
<Activity>, indicar el nombre de la clase java asociada como valor del atributo android:name, y
asignarle su ttulo mediante el atributo android:label, ms adelante veremos que opciones
adicionales podemos especificar. Todo esto lo incluiremos justo debajo de la definicin de la
actividad principal dentro del fichero AndroidManifest.xml:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.sgoliver.android.holausuario"
android:versionCode="1"
android:versionName="1.0" >
...

http://www.sgoliver.net/blog/?p=1316

<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"
</intent-filter>
</activity>
<activity android:name=".FrmSaludo"
10/26

7/2/2014

Desarrollando una aplicacin Android sencilla | sgoliver.net blog

19
20
21
22
23
24
25

android:label="@string/title_activity_saludo" >
</activity>
</application>
</manifest>

Como vemos, el ttulo de la nueva actividad lo hemos indicado como referencia a una nueva
cadena de caracteres, que tendremos que incluir como ya hemos comentado anteriormente en el
fichero /res/values/strings.xml
Llegados aqu, y si todo ha ido bien, deberamos poder ejecutar el proyecto sin errores y probar
nuestra aplicacin en el emulador.
La forma de ejecutar y depurar la aplicacin en Eclipse es anloga a cualquier otra aplicacin java,
pero por ser el primer captulo vamos a recordarla.
Lo primero que tendremos que hacer ser configurar un nuevo perfil de ejecucin. Para ello
accederemos al men Run/ Run Configurations y nos aparecer la siguiente pantalla.

Sobre la categora Android Application pulsaremos el botn derecho y elegiremos la opcin


New para crear un nuevo perfil para nuestra aplicacin. En la siguiente pantalla le pondremos un
nombre al perfil, en nuestro ejemplo hola-usuario, y en la pestaa Android seleccionaremos el
proyecto que queremos ejecutar.

El resto de opciones las dejaremos por defecto y pasaremos a la pestaa Target. En esta
http://www.sgoliver.net/blog/?p=1316

11/26

7/2/2014

Desarrollando una aplicacin Android sencilla | sgoliver.net blog

segunda pestaa podremos seleccionar el AVD sobre el que queremos ejecutar la aplicacin,
aunque suele ser prctico indicarle a Eclipse que nos pregunte esto antes de cada ejecucin, de
forma que podamos ir alternando fcilmente de AVD sin tener que volver a configurar el perfil.
Para ello seleccionaremos la opcin Always prompt to pick device.

Un poco ms abajo en esta misma pestaa es bueno marcar la opcin Disable Boot Animation
para acelerar un poco el primer arranque del emulador, y normalmente tambin suele ser
necesario reducir, o mejor dicho escalar, la pantalla del emulador de forma que podamos verlo
completo en la pantalla de nuestro PC. Esto se configura mediante la opcin Additional Emulator
Command Line Options, donde en mi caso indicar la opcin -scale 0.75, aunque este valor
depender de la resolucin de vuestro monitor y de la configuracin del AVD.

Tras esto ya podramos pulsar el botn Run para ejecutar la aplicacin en el emulador de
Android. Eclipse nos preguntar en qu dispositivo queremos ejecutar y nos mostrar dos listas.
La primera de ellas con los dispositivos que haya en ese momento en funcionamiento (por ejemplo
si ya tenamos un emulador funcionando) y la siguiente con el resto de AVDs configurados en
nuestro entorno. Elegir en primer lugar el emulador con Android 2.2. Es posible que la primera
ejecucin se demore unos minutos, todo depender de las posibilidades de vuestro PC, as que
paciencia.

http://www.sgoliver.net/blog/?p=1316

12/26

7/2/2014

Desarrollando una aplicacin Android sencilla | sgoliver.net blog

Si todo va bien, tras una pequea espera aparecer el emulador de Android y se iniciar
automticamente nuestra aplicacin. Podemos probar a escribir un nombre y pulsar el botn Hola
para comprobar si el funcionamiento es el correcto.

Sin cerrar este emulador podramos volver a ejecutar la aplicacin sobre Android 4.2
seleccionando el AVD correspondiente. De cualquier forma, si vuestro PC no es demasiado
potente no recomiendo tener dos emuladores abiertos al mismo tiempo.

http://www.sgoliver.net/blog/?p=1316

13/26

7/2/2014

Desarrollando una aplicacin Android sencilla | sgoliver.net blog

Y con esto terminamos por ahora. Espero que esta aplicacin de ejemplo os sea de ayuda para
aprender temas bsicos en el desarrollo para Android, como por ejemplo la definicin de la interfaz
grfica, el cdigo java necesario para acceder y manipular los elementos de dicha interfaz, y la
forma de comunicar diferentes actividades de Android. En los apartados siguientes veremos
algunos de estos temas de forma mucho ms especfica.
Podis consultar online y descargar el cdigo fuente completo de este artculo desde github.
Curso de Programacin Android en PDF
Este curso tambin est disponible en PDF. Descubre cmo conseguirlo
Te ha sido de utilidad el Curso de Programacin Android? Quieres colaborar de forma
econmica con el proyecto? Puedes contribuir con cualquier cantidad, unos cntimos, unos
euros, cualquier aportacin ser bienvenida. Adems, si tu aportacin es superior a una
pequea cantidad simblica recibirs como agradecimiento un documento con la ltima versin
del curso disponible en formato PDF. Sea como sea, muchas gracias por colaborar!
Ms informacin:
Descubre cmo conseguir el curso en PDF
Preguntas frecuentes

Comparte esta
entrada:

Facebook 24

Twitter 12

Google

Correo electrnico

Suscrbete
Suscrbete a alguno de nuestros canales.
http://www.sgoliver.net/blog/?p=1316

14/26

7/2/2014

Desarrollando una aplicacin Android sencilla | sgoliver.net blog

Artculos Relacionados:
Un buen libro sobre programacin Android
Integracin con Google+ (II): Datos de perfil y Crculos
Integracin con Google+ (I): Google+ Sign-In
Notificaciones Push Android: Google Cloud Messaging (GCM). Implementacin Cliente (Nueva Versin)
Google Play Services: Introduccin y Preparativos

aplicacin, bsicos, conceptos, curso android, ejemplo, primera, sencillo


Ms aplicaciones Android recomendadas

Interfaz de usuario en Android: Layouts

245 Respuestas a Desarrollando una aplicacin Android sencilla


Rodikito 18/07/2013 at 13:14 #
hola, gracias por todo esto. acabo de terminar esta seccin (por segunda vez para asentar bien
conocimientos).
recomiendo , como se ha dicho por ahi en otro comentario, jugar un poquillo con el ejemplo y aadir ms
cosas, como otros cambpos de texto (p.e. apellidos) para ver si podemos hacerlo solos sin ayuda.
un aporte, vi por ahi, y me resulta bastante til, que si pulsas control + shift + O a la vez, en el cdigo se te
aaden directamente los imports que te falten segn lo que hayas escrito
saludos

SebsLakes 15/08/2013 at 20:10 #


excelente me est ayudando bastante para iniciarme en esto, eso si hice un par de modificaciones como
por ejemplo ocupar el parmetro android:onClick y as llamar directo a un mtodo dentro de mi clase,
Muchsimas gracias por el curso

alex 15/08/2013 at 23:11 #


hola trato de seguir el ejemplo pero en TextView y Button me da el siguiente error
Error: No resource found that matches the given name (at text with value @string/nombre).
http://www.sgoliver.net/blog/?p=1316

15/26

7/2/2014

Desarrollando una aplicacin Android sencilla | sgoliver.net blog

SebsLakes 17/08/2013 at 17:47 #


Alex, te falta agregar esto en tu archivo de string
Escribe aqu tu nombre
buscalo en la carpeta res/values
con eso lo arreglas, saludos

Daniel 18/08/2013 at 4:28 #


Al correr mi aplicacion se queda el emulador en negro con letras blancas q dicen ANDROID_ saben por
que??

Daniel 23/08/2013 at 1:32 #


hola muchas gracias por estos post los estoy siguiendo en orden para aprender llevo esta semana pues
jajajja GRACIAS no resulta feo.

Carlos Paucar 23/08/2013 at 22:15 #


Hola te felicito por el buen material y estaba siguiendo el primer ejemplo y me da un error en esta linea..
txtSaludo.setText(Hola + bundle.getString(NOMBRE));
bundle no puede ser resuelto . he seguido paso a paso y no se porque me da ese erro en el FrmSaludo
aqui el codigo
public class FrmSaludo extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_saludo);
//Localizar los controles
TextView txtSaludo = (TextView)findViewById(R.id.TxtSaludo);
//Construimos el mensaje a mostrar
txtSaludo.setText(Hola + bundle.getString(NOMBRE));
}
}
http://www.sgoliver.net/blog/?p=1316

16/26

7/2/2014

Desarrollando una aplicacin Android sencilla | sgoliver.net blog

admin 24/08/2013 at 18:09 #


Hola Carlos, te has saltado una linea, justo antes de txtSaludo.setText() hay una linea donde se crea el
objeto bundle. Saludos.

Luis 27/08/2013 at 19:43 #


Excelente tutorial, al inicio no entendi nada de lo que decias y la aplicacion no funciono (forzaba cierre)
pero al segundo dia todo perfecto, gracias.

Jess Martnez 03/09/2013 at 5:31 #


A todos los que se quieran iniciar programacin en Android, les recomiendo ampliamente hacer un curso
basado en JAVA, despus de tomar el curso entiendes el lenguaje, como sta acomodado, que significa
cada casa, en fin realmente APRENDES.
Tremendo trabajo ests haciendo Oliver y se nota que es por amor al arte, ni siquiera tienes publicidad en
tu blog, Por todo este curso y esfuerzo que vale mucho ms que 2 euros GRACIAS ;D

sgoliver 03/09/2013 at 9:29 #


Hombre, algo de publicidad s tengo, pero eso s que no me paga ni el dominio de la web Muchas
gracias por los comentarios. Saludos.

Juan! 04/09/2013 at 5:54 #


Heey Muy Bueno el aporte loco, le entendi excelente,solo que no me corrio al ejecutarlo me manda error en
los @string tanto en los de @string/nombre hasta estos de @string/tittle_activity_main y
@string_activity_saludo por que? u.u
saludos y muchisimas gracias por el aporte! :D

cesar 17/09/2013 at 7:26 #


esta muy bueno tu tutorial de los mejores que he encontrado, sin embargo tengo un problema que no he
http://www.sgoliver.net/blog/?p=1316

17/26

7/2/2014

Desarrollando una aplicacin Android sencilla | sgoliver.net blog

logrado resolver se trata del setOnClickListener inicialmente lo escribi para ir interiorisando lo que iba
sucediendo pero en el momento que llegue a esta parte copie y pegue porque no me servia mira el codigo
es tal cual el que tenes ahi, me sale el sgte error:
- The type new DialogInterface.OnClickListener(){} must implement the inherited abstract method
DialogInterface.OnClickListener.onClick(DialogInterface, int)
- Line breakpoint:MainActivity [line: 25] onCreate(Bundle)
- The method setOnClickListener(View.OnClickListener) in the type View is not applicable for the
arguments (new DialogInterface.OnClickListener(){})
no se que sucede, si me podes aclarar la duda lo agradeceria mucho igualmente muchas gracias por el
tutorial

chankas 19/09/2013 at 22:39 #


Excelente! Consigues explicarlo perfectamente de un modo muy simple.
Seguir con el resto!

Israel 20/09/2013 at 5:07 #


Hola, muy bueno el curso.
Tengo un problema, tengo instalada la API 18 en mi eclipse, pero al tratar de crear un nuevo proyecto me
dice que debo instalar Android Support Library el cual ya est instalado y pues no me permite crear el
proyecto
Gracias

Miquel 24/09/2013 at 12:17 #


Buenas,
he seguido el tutorial al pie de la letra, y me da el siguiente error en estas lneas en el fichero
mainActivity.java:
final EditText txtNombre = (EditText)findViewById(R.id.TxtNombre);
final Button btnHola = (Button)findViewById(R.id.BtnHola);
TxtNombre cannot be resolved or is not in a field. Me ocurre lo mismo con el BtnHola.
Muchas gracias y gran trabajo! ^^

klinton 09/10/2013 at 18:26 #

http://www.sgoliver.net/blog/?p=1316

18/26

7/2/2014

Desarrollando una aplicacin Android sencilla | sgoliver.net blog

Dos dudas:
- Una, he copiado el cdigo entero y tengo un problemilla, cuando ejecuta la segunda activity, en vez de
salirme Hola me sale Hola NULL. Al parecer no lee el nombre que introduzco.
- Como descargo los cdigos fuente desde GitHub?

klinton 09/10/2013 at 19:48 #


Ya he solucionado lo de NULL

brenda 13/10/2013 at 19:11 #


Hola, excelente aportacion un 10, pero al igual que Juan! me marcan los mismo errore, y tambien si no es
mucho pedir podrias explicar como correr tus proyectos desde Git con eclipse, ya los clone e importe pero
no corren me marca un error de launcher

Fabin 17/10/2013 at 16:49 #


Buen aporte, muchas gracias.

romny 25/10/2013 at 19:31 #


hola, muy cheveres lo tutoriales, pero sugueriria que hicieran un menu de navegacion para acceder al
proximo articulo, despues que uno haya terminado de leer. esto le da mas fluides.

Gabriel Borja Moscoso 27/10/2013 at 23:22 #


Hola no se por que no sirve escribir con el teclado, me podras ayudar.

Maca 14/11/2013 at 20:05 #


Por que puede salir este error al ejecutar:
[2013-11-14 14:01:40 - HolaUsuario] Launching a new emulator with Virtual Device Galaxy
http://www.sgoliver.net/blog/?p=1316

19/26

7/2/2014

Desarrollando una aplicacin Android sencilla | sgoliver.net blog

[2013-11-14 14:01:53 - Emulator] Failed to allocate memory: 8


[2013-11-14 14:01:53 - Emulator]
[2013-11-14 14:01:53 - Emulator] This application has requested the Runtime to terminate it in an unusual
way.
[2013-11-14 14:01:53 - Emulator] Please contact the applications support team for more information.

jorge andres 23/11/2013 at 17:03 #


Hola alguien podria ayudarme he seguido el manual al pie de la letra pero me salen los siguientes
errores en MainActivity.java
R cannot be resolved to a variable
Intent cannot be resolved to a type

Humberto Antonio Marquez 30/11/2013 at 1:35 #


Buen da.
Estoy siguiendo el tutorial sin embargo me marca error en estas lineas:
setContentView(R.layout.activity_saludo);
TextView txtSaludo = (TextView)findViewById(R.id.TxtSaludo);
final EditText txtNombre = (EditText)findViewById(R.id.TxtNombre);
final Button btnHola = (Button)findViewById(R.id.BtnHola);
en los 3 casos me dice que cannot be resolved or is not a field
De antemano muchas gracias:

LENIN 02/12/2013 at 17:44 #


Muchas gracias por el buen material.
Saludos

rc Vega Noguera 05/12/2013 at 10:59 #


Buenas.
Primero de todo decir que es un tutorial excelente y mhe ha ayudado mucho, pero tengo un error que no
consigo solucionar.

http://www.sgoliver.net/blog/?p=1316

20/26

7/2/2014

Desarrollando una aplicacin Android sencilla | sgoliver.net blog

En el fichero AndroidManifest.xml se tenia que poner:


Mi error es:
error:Error: No resource found that matches the given name (at label with value
@string/title_activity_saludo).
LLevo horas dandole vueltas al error y no consigo solucionarlo, si me pudieras ayudar te estaria muy
agradecido.

oSv@ldO 31/12/2013 at 7:26 #


Excelente curso y lo mejor es que proporciona todo el cdigo por si surgen errores al estar tipeando
cdigo, muchas gracias.

Rolitos 03/01/2014 at 22:23 #


Excelente Curso gracias

Rolitos 03/01/2014 at 22:28 #


Hola para los que tengan el problema con la librera R.java lo que deben hacer es corregir el cdigo en
activity_main.xml
) <-as esta bien escrito
) <-as esta bien escrito
les falta el signo +, despues de corregir y grabar todo aparece automaticamente la clase R.java

Rolitos 03/01/2014 at 22:32 #


(android:text=@string/nombre /> ) <- as esta erroneo:

Rolitos 03/01/2014 at 22:32 #


(android:text=@+string/nombre />) <-as esta bien escrito

http://www.sgoliver.net/blog/?p=1316

21/26

7/2/2014

Desarrollando una aplicacin Android sencilla | sgoliver.net blog

Edgar 06/01/2014 at 21:07 #


Buen tutorial, fcil de entender y bien explicado, sin duda el mejor que he encontrado, pero tengo estos
errores
ctivity_main cannot be resolved or is not a field
TxtNombre cannot be resolved or is not a field,
lo mismo con el botn y no puedo probar mi aplicacin por esto y he seguido todo al pi de la letra, que
puede ser?

gustavo 07/01/2014 at 10:33 #


hola. cuando le doy click al boton me sale el error unfortunately, HolaUsuario has stopped.
porque pasa esto?
gracias.

gustavo 07/01/2014 at 10:37 #


Segun el logCat:
01-07 09:36:03.180: E/AndroidRuntime(724): FATAL EXCEPTION: main
01-07 09:36:03.180: E/AndroidRuntime(724): android.content.ActivityNotFoundException: Unable to find
explicit activity class {com.farameo.holausuario/com.farameo.holausuario.FrmSaludo}; have you declared
this activity in your AndroidManifest.xml?

paulina morales 23/01/2014 at 3:35 #


Muchas gracias me ayudo mucho =)

paulina morales 23/01/2014 at 3:37 #


Esta muy bien explicado me salio a la primera, gracias por tus explicaciones =)

Comentarios Anteriores

Trackbacks/Pingbacks
Tweets that mention Desarrollando una aplicacin Android sencilla | sgoliver.net blog -- Topsy.com - 16/08/2010
http://www.sgoliver.net/blog/?p=1316

22/26

7/2/2014

Desarrollando una aplicacin Android sencilla | sgoliver.net blog

[...] This post was mentioned on Twitter by Babelias, Salva. Salva said: Publicado nuevo post sobre Android.
Desarrollando una aplicacin Android sencilla (http://www.sgoliver.net/blog/?p=1316) [...]
Interfaces de usuario en Android: Layouts | sgoliver.net blog - 17/08/2010
[...] el artculo anterior, donde desarrollamos una sencilla aplicacin Android desde cero, ya hicimos algunos
comentarios [...]
Desarrollo en Android | sgoliver.net blog - 27/08/2010
[...] Desarrollando una aplicacin Android sencilla [...]
Primeros pasos con Android: tutorial de App bsica | victorpascual.es - 23/02/2011
[...] idea, lo bueno y normal es hacerse un pequeo tutorial de inicio que d las bases. Ah va este:
http://www.sgoliver.net/blog/?p=1316. Veamos qu tal va la cosa. Compartir [...]
Desarrollando una aplicacin Android | Android Wireless - 30/09/2012
[...] Fuente original, creo que es el mejor tuto para iniciarse, asi pues, lo aado al portal, pero en es [...]
Componentes de una aplicacin Android | sgoliver.net blog - 23/12/2012
[...] el siguiente artculo empezaremos ya a ver algo de cdigo, analizando al detalle una aplicacin [...]
Estadsticas del blog en 2012 | sgoliver.net blog - 02/01/2013
[...] Por otro lado, las pginas ms visitadas en el ao 2012 han vuelto a ser con gran diferencia las dedicadas al
Curso de Programacin Android, especialmente el ndice de contenidos, la seccin dedicada a la obtencin del
curso en formato PDF, y los artculos iniciales sobre la instalacin y configuracin del entorno de desarrollo para
Android, la estructura de un proyecto Android, y la creacin de una aplicacin Android sencilla de ejemplo. [...]
Interfaz de usuario en Android: Widgets (II) | sgoliver.net blog - 18/04/2013
[...] Este ID nos llega como parmetro del intent que ha lanzado la actividad. Como ya vimos en un artculo anterior
del curso, este intent se puede recuperar mediante el mtdo getIntent() y sus parmetros mediante [...]

Deja un comentario
Name (required)
Email (w ill not be published) (required)
Website

Enviar Comentario

Buscar...

http://www.sgoliver.net/blog/?p=1316

23/26

7/2/2014

Desarrollando una aplicacin Android sencilla | sgoliver.net blog

Publicidad

Sguenos!
Suscrbete a alguno de nuestros canales.


Licencia del Blog
Salvador Gmez Oliver. Todos los derechos reservados.
Queda prohibida la reproduccin total o parcial de los contenidos de este blog, as como su uso y difusin, sin el
consentimiento previo de su autor.
Por favor, respeta los derechos de autor. Si quieres emplear alguno de los textos o imgenes de este blog
puedes solicitarlo por correo electrnico a la direccin indicada en la seccin de contacto.

Publicidad

http://www.sgoliver.net/blog/?p=1316

24/26

7/2/2014

Desarrollando una aplicacin Android sencilla | sgoliver.net blog

Archivo
Elegir mes

Categoras
Elegir categora

Etiquetas

.NET actualizacin ajedrez antlr base de datos blog C# C++ compiladores controles
curso

curso android descargas documentacin

http://www.sgoliver.net/blog/?p=1316

DOM ebook Eclipse ensamblador


25/26

7/2/2014

Desarrollando una aplicacin Android sencilla | sgoliver.net blog

FKScript google gratis herramienta IA java JRtfTree librera libro manuales mapas Mono
mquinas virtuales NChess novedades novedades sgoliver.net
plugin programacin RTF SAX SQlite tutoriales web

NRtfTree nueva open source pdf

Enlaces .NET
el Guille La Web de Visual Basic, C#, .NET y ms

Enlaces Android
AndDev.org [Ingls]
Androcode

2014 sgoliver.net blog. All Rights Reserved.


Powered by WordPress. Designed by

http://www.sgoliver.net/blog/?p=1316

26/26

Вам также может понравиться