Inicio Android Desarrollando una aplicación Android sencilla (Eclipse)

Desarrollando una aplicación Android sencilla (Eclipse)

por sgoliver
274 comentarios
0

[box type=»alert» border=»full»]ATENCION: Este artículo está obsoleto. Google ha dejado de desarrollar el plugin de Android para Eclipse, y ha adoptado Android Studio como nueva herramienta oficial de desarrollo para Android. Te aconsejo que leas el nuevo capítulo dedicado a la creación de una aplicación sencilla en Android Studio.[/box]

Después de instalar nuestro entorno de desarrollo para Android y comentar la estructura básica de un proyecto y los diferentes componentes software que podemos utilizar ya es hora de empezar a escribir algo de código. Y como siempre lo mejor es empezar por escribir una aplicación sencilla.

En un principio me planteé analizar en este capítulo el clásico Hola Mundo pero más tarde me pareció que se iban a quedar algunas cosas básicas en el tintero. Así que he versionado a mi manera el Hola Mundo transformándolo en algo así como un Hola Usuario, que es igual de sencilla pero añade un par de cosas interesantes de contar. La aplicación 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 inútil, pero aprenderemos muchos conceptos básicos, que para empezar no está mal.

Por dibujarlo para entender mejor lo que queremos conseguir, sería algo tan sencillo como lo siguiente:

aplicacion-sencilla_opt

Vamos a partir del proyecto de ejemplo que creamos en un apartado anterior, al que casualmente llamamos HolaUsuario.

Como ya vimos Eclipse había creado por nosotros la estructura de carpetas del proyecto y todos los ficheros necesarios de un Hola Mundo básico, es decir, una sola pantalla donde se muestra únicamente un mensaje fijo.

Lo primero que vamos a hacer es diseñar nuestra pantalla principal modificando la que Eclipse nos ha creado por defecto. Aunque ya lo hemos comentado de pasada, recordemos dónde y cómo se define cada pantalla de la aplicación. En Android, el diseño y la lógica de una pantalla están separados en dos ficheros distintos. Por un lado, en el fichero  /res/layout/activity_main.xml tendremos el diseño puramente visual de la pantalla definido como fichero XML y por otro lado, en el fichero  /src/paquete.java/MainActivity.java, encontraremos el código java que determina la lógica de la pantalla.

Vamos a modificar en primer lugar el aspecto de la ventana principal de la aplicación añadiendo los controles (views) que vemos en el esquema mostrado al principio del apartado. Para ello, vamos a sustituir el contenido del fichero activity_main.xml por el siguiente:

<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">

    <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 cómo se van a distribuir en el espacio los controles que incluyamos en su interior. Los programadores java, y más concretamente de Swing, conocerán este concepto perfectamente. En este caso, un LinearLayout distribuirá los controles simplemente uno tras otro y en la orientación que indique su propiedad android:orientation, que en este caso será “vertical”.

Dentro del layout hemos incluido 3 controles: una etiqueta (TextView), un cuadro de texto (EditText), y un botón (Button). En todos ellos hemos establecido las siguientes propiedades:

  • android:id. ID del control, con el que podremos identificarlo más tarde en nuestro código. Vemos que el identificador lo escribimos precedido de “@+id/”. Esto tendrá como efecto que al compilarse el proyecto se genere automáticamente una nueva constante en la clase R para dicho control. Así, por ejemplo, como al cuadro de texto le hemos asignado el ID TxtNombre, podremos más tarde acceder al él desde nuestro código haciendo referencia a la constante R.id.TxtNombre.
  • android:layout_height y 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 ajustarán 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.

Además de estas propiedades comunes a casi todos los controles que utilizaremos, en el cuadro de texto hemos establecido también la propiedad android:inputType, que indica qué tipo de contenido va a albergar el control, en este caso texto normal (valor “text”), aunque podría haber sido una contraseña (textPassword), un teléfono (phone), una fecha (date), ….

Por último, en la etiqueta y el botón 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:text su identificador precedido del prefijo “@string/”. Dicho de otra forma, la primera alternativa habría sido indicar directamente el texto como valor de la propiedad, por ejemplo en la etiqueta de esta forma:

<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, consistiría 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:”.

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

Y posteriormente indicar el identificador de la cadena como valor de la propiedad android:text, siempre precedido del prefijo “@string/”, de la siguiente forma:

<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 aplicación, lo que nos podría facilitar por ejemplo la traducción de la aplicación a otro idioma.Con esto ya tenemos definida la presentación visual de nuestra ventana principal de la aplicación. De igual forma definiremos la interfaz de la segunda pantalla, creando un nuevo fichero llamado activity_saludo.xml, y añadiendo esta vez tan solo una etiqueta (TextView) para mostrar el mensaje personalizado al usuario.

Para añadir el fichero, pulsaremos el botón derecho del ratón sobre la carpeta de recursos /res/layout y pulsaremos la opción “New Android XML file”.

new-android-xml-file_opt

En el cuadro de diálogo que nos aparece indicaremos como tipo de recurso “Layout”, indicaremos el nombre del fichero (con extensión “.xml”) y como elemento raíz seleccionaremos LinearLayout. Finalmente pulsamos Finish para crear el fichero.

new-android-xml-file-2_opt

Eclipse creará entonces el nuevo fichero y lo abrirá en el editor gráfico, aunque como ya indicamos, nosotros accederemos a la solapa de código para modificar directamente el contenido XML del fichero.

Para esta segunda pantalla el código que incluiríamos sería el siguiente:

<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 aplicación deberemos implementar la lógica de la misma. Como ya hemos comentado, la lógica de la aplicación se definirá en ficheros java independientes. Para la pantalla principal ya tenemos creado un fichero por defecto llamado MainActivity.java. Empecemos por comentar su código por defecto:

package net.sgoliver.android.holausuario;

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

Como ya vimos en un apartado anterior, las diferentes pantallas de una aplicación Android se definen mediante objetos de tipo Activity. Por tanto, lo primero que encontramos en nuestro fichero java es la definición de una nueva clase MainActivity que extiende a Activity. El único método que modificaremos de esta clase será el método onCreate(), llamado cuando se crea por primera vez la actividad. En este método lo único que encontramos en principio, además de la llamada a su implementación en la clase padre, es la llamada al método setContentView(R.layout.activity_main). Con esta llamada estaremos indicando a Android que debe establecer como interfaz gráfica de esta actividad la definida en el recurso R.layout.activity_main, que no es más que la que hemos especificado en el fichero /res/layout/activity_main.xml. Una vez más vemos la utilidad de las diferentes constantes de recursos creadas automáticamente en la clase R al compilar el proyecto.

Además del método onCreate(), vemos que también se sobrescribe el método onCreateOptionsMenu(), que se utiliza para definir menús en la aplicación. Por el momento no tocaremos este método, más adelante en el curso nos ocuparemos de este tema.

Ahora vamos a crear una nueva actividad para la segunda pantalla de la aplicación análoga a ésta primera, para lo que crearemos una nueva clase FrmSaludo que extienda también de Activity y que implemente el método onCreate() pero indicando esta vez que utilice la interfaz definida para la segunda pantalla en R.layout.activity_saludo.

Para ello, pulsaremos el botón derecho sobre la carpeta /src/tu.paquete.java/ y seleccionaremos la opción de menú New / Class.

new-class-1_opt

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

new-class-2_opt

Pulsaremos Finish y Eclipse creará el nuevo fichero y lo abrirá en el editor de código java.

Modificaremos por ahora el código de la clase para que quede algo análogo a la actividad principal:

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 creación de una nueva pantalla (layout xml + clase java) se puede realizar también 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 código 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 lógica de la aplicación.

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 sólo el cuadro de texto y el botón. Para ello utilizaremos el método findViewById() indicando el ID de cada control, definidos como siempre en la clase R. Todo esto lo haremos dentro del método onCreate() de la clase MainActivity, justo a continuación de la llamada a setContentView() que ya comentamos:

. . .

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 añadido también varios import adicionales para tener acceso a todas las clases utilizadas.

Una vez tenemos acceso a los diferentes controles, ya sólo nos queda implementar las acciones a tomar cuando pulsemos el botón de la pantalla. Para ello, continuando el código anterior, y siempre dentro del método onCreate(), implementaremos el evento onClick de dicho botón, veamos cómo:

. . .

import android.content.Intent;

. . .

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {

        . . .

        //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 botón
        btnHola.setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View v) {
                  //Creamos el Intent
                  Intent intent =
                          new Intent(MainActivity.this, FrmSaludo.class);

                  //Creamos la información a pasar entre actividades
                  Bundle b = new Bundle();
                  b.putString("NOMBRE", txtNombre.getText().toString());

                  //Añadimos la información al intent
                  intent.putExtras(b);

                  //Iniciamos la nueva actividad
                  startActivity(intent);
             }
        });
    }

}

. . .

Como ya indicamos en el apartado anterior, la comunicación 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 aplicación, 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 quisiéramos tan sólo mostrar una nueva actividad ya tan sólo nos quedaría llamar a startActivity() pasándole como parámetro el intent creado. Pero en nuestro ejemplo queremos también pasarle cierta información 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 información a pasar entre las actividades. En nuestro caso sólo añadiremos un dato de tipo String mediante el método putString(clave, valor). Tras esto añadiremos la información al intent mediante el método putExtras(bundle).

Con esto hemos finalizado ya actividad principal de la aplicación, por lo que pasaremos ya a la secundaria. Comenzaremos de forma análoga a la anterior, ampliando el método onCreate() obteniendo las referencias a los objetos que manipularemos, esta vez sólo la etiqueta de texto. Tras esto viene lo más interesante, debemos recuperar la información 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 método getIntent() y recuperaremos su información asociada (objeto Bundle) mediante el método getExtras().

Hecho esto tan sólo nos queda construir el texto de la etiqueta mediante su método setText(texto) y recuperando el valor de nuestra clave almacenada en el objeto Bundle mediante getString(clave).

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 información 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 lógica de las dos pantallas de nuestra aplicación y tan sólo nos queda un paso importante para finalizar nuestro desarrollo. Como ya indicamos en un apartado anterior, toda aplicación 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 aplicación deben quedar convenientemente recogidas en este fichero. La actividad principal ya debe aparecer puesto que se creó de forma automática al crear el nuevo proyecto Android, por lo que debemos añadir tan sólo 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 título mediante el atributo android:label, más adelante veremos que opciones adicionales podemos especificar. Todo esto lo incluiremos justo debajo de la definición de la actividad principal dentro del fichero AndroidManifest.xml:

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

    . . .

    <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"
        android:label="@string/title_activity_saludo" >
    </activity>

</manifest>

Como vemos, el título 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, deberíamos poder ejecutar el proyecto sin errores y probar nuestra aplicación en el emulador.

La forma de ejecutar y depurar la aplicación en Eclipse es análoga a cualquier otra aplicación java, pero por ser el primer capítulo vamos a recordarla.

Lo primero que tendremos que hacer será configurar un nuevo “perfil de ejecución”. Para ello accederemos al menú “Run/ Run Configurations…” y nos aparecerá la siguiente pantalla.

ejecutar-aplicacion-1_opt

Sobre la categoría “Android Application” pulsaremos el botón derecho y elegiremos la opción “New” para crear un nuevo perfil para nuestra aplicación. En la siguiente pantalla le pondremos un nombre al perfil, en nuestro ejemplo “hola-usuario”, y en la pestaña “Android” seleccionaremos el proyecto que queremos ejecutar.

ejecutar-aplicacion-2_opt

El resto de opciones las dejaremos por defecto y pasaremos a la pestaña “Target”. En esta segunda pestaña podremos seleccionar el AVD sobre el que queremos ejecutar la aplicación, aunque suele ser práctico indicarle a Eclipse que nos pregunte esto antes de cada ejecución, de forma que podamos ir alternando fácilmente de AVD sin tener que volver a configurar el perfil. Para ello seleccionaremos la opción “Always prompt to pick device”.

ejecutar-aplicacion-3_opt

Un poco más abajo en esta misma pestaña es bueno marcar la opción “Disable Boot Animation” para acelerar un poco el primer arranque del emulador, y normalmente también 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 opción “Additional Emulator Command Line Options”, donde en mi caso indicaré la opción “-scale 0.75”, aunque este valor dependerá de la resolución de vuestro monitor y de la configuración del AVD.

ejecutar-aplicacion-4_opt

Tras esto ya podríamos pulsar el botón “Run” para ejecutar la aplicación 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 teníamos 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 ejecución se demore unos minutos, todo dependerá de las posibilidades de vuestro PC, así que paciencia.

ejecutar-aplicacion-5_opt

Si todo va bien, tras una pequeña espera aparecerá el emulador de Android y se iniciará automáticamente nuestra aplicación. Podemos probar a escribir un nombre y pulsar el botón “Hola” para comprobar si el funcionamiento es el correcto.

aplicacion-22_opt

Sin cerrar este emulador podríamos volver a ejecutar la aplicación 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.

aplicacion-41_opt

Y con esto terminamos por ahora. Espero que esta aplicación de ejemplo os sea de ayuda para aprender temas básicos en el desarrollo para Android, como por ejemplo la definición de la interfaz gráfica, el código 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 más específica.

Podéis consultar online y descargar el código fuente completo de este artículo desde github.

Curso de Programación Android en PDF

Este curso también está disponible en PDF. Descubre cómo conseguirlo…

¿Te ha sido de utilidad el Curso de Programación Android? ¿Quieres colaborar de forma económica con el proyecto? Puedes contribuir con cualquier cantidad, unos céntimos, unos euros, cualquier aportación será bienvenida. Además, si tu aportación es superior a una pequeña cantidad simbólica recibirás como agradecimiento un documento con la última versión del curso disponible en formato PDF. Sea como sea, muchas gracias por colaborar!

Más información:

274 comentarios
0

También te puede interesar

274 comentarios

Tweets that mention Desarrollando una aplicación Android sencilla | sgoliver.net blog -- Topsy.com 16/08/2010 - 19:33

[…] This post was mentioned on Twitter by Babelias, Salva. Salva said: Publicado nuevo post sobre Android. Desarrollando una aplicación Android sencilla (http://www.sgoliver.net/blog/?p=1316) […]

Responder
Interfaces de usuario en Android: Layouts | sgoliver.net blog 17/08/2010 - 20:14

[…] el artículo anterior, donde desarrollamos una sencilla aplicación Android desde cero, ya hicimos algunos comentarios […]

Responder
Desarrollo en Android | sgoliver.net blog 27/08/2010 - 9:51

[…] Desarrollando una aplicación Android sencilla […]

Responder
ortadilla 05/09/2010 - 17:18

He visto un pequeño error sin importancia en la descripción del constructor del Intent en la Activity principal:

«…new Intent(HolaUsuario.this, FrmMensaje.class);»

Dice que «pasaremos al constructor una referencia a la propia actividad llamadora (HolaUsuario.this), y la clase de la actividad llamada (FrmSaludo.class)», cuando la actividad llamada en el constructor se llama FrmMensaje.class.

Es una nimiedad, pero por si querías corregirlo.

¡Gran tutorial para empezar en Android!

Responder
sgoliver 06/09/2010 - 23:18

Vaya, esto es lo que tiene escribir las cosas a ratos, que un día piensa uno en un nombre para la clase y al día siguiente se piensa en otro. Gracias por el aviso, ahora mismo lo corrijo.

Responder
ERiDeM 12/09/2010 - 15:41

Muy buen tutorial!
Estaba leyendo algunos libros sobre Android y me había perdido con los Intents, pero con tu manual me ha quedado todo muy claro :)
Gracias!!

Responder
Jose 26/09/2010 - 22:38

Cuando escribo un mensaje en la aplicacion, salta el mensaje de error «Lo sentimos, La aplicacion Hola Usuario se hinterrumpido inesperadamente, Intentelo de nuevo»

He probado a crear el codigo, a copiar lo que tienes y a reemplazar con el tuyo, en ambos… mismo error.

Saludos

Responder
Gustavo Pedreros 20/10/2010 - 16:21

Se agradece mucho tu tutorial, me había perdido un tanto en lo referente al XML, pero me resulto, había olvidado crear en strings.xml las variables nombre y hola.

Responder
Toni 30/10/2010 - 2:11

Hola!

El tutorial impresionante, me encanta, ya he votado en la encuesta…

Pero a mi me da un error al hacer el «override» del «onclick»: The method onClick(View) of type new View.OnClickListener(){} must override a superclass method

¿alguien puede ayudarme?

Un saludo.
Toni.

Responder
Juan 08/01/2011 - 15:25

Hola!!!

Muy buen tutorial!! mis felicitaciones ;-).

Toni he resuelto el problema que comentas buceando un poco en la red, resulta que en HolaUsuario.java, en la línea btnHola.setOnClickListener(new OnClickListener(){…}), pues no puedes crear ahí directamente el new OnClickListener(){…} tienes que separarlo en unha función.

Pongo a continuación el código de la clase tal y como me funciona a mi:

public class HolaUsuario extends Activity {
/** Called when the activity is first created. */

EditText txtNombre = null;
Button btnHola = null;

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

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

btnHola.setOnClickListener(buttonListener);
}

//Error: OnClickListener cannot be resolved to a type
private OnClickListener buttonListener = new OnClickListener()
{
@Override
public void onClick(View arg0) {
Intent intent = new Intent(HolaUsuario.this, FrmMensaje.class);

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

startActivity(intent);
}
};

}

Espero que te sirva de ayuda,

Un saludo!

Juan.

Responder
Mei 18/01/2011 - 20:28

Hola, soy nueva en programación para Android y cuando ejecuto la aplicación una vez he escrito el nombre y le doy al botón hola me salta un mensaje de error «Force Close», ¿alguien me puede decir por qué? Gracias

Responder
sgoliver 19/01/2011 - 9:47

Hola. Resulta dificil saber cuál puede ser el problema tan sólo con la información que aportas. Parece claro que se trata de una excepción no controlada, pero habría que determinar dónde se produce exactamente. ¿Has probado a depurar paso a paso la aplicación?

Responder
Koldan 20/01/2011 - 17:13

Muy buen tutorial,

sin embargo me pasa como a Toni:
The method onClick(View) of type new View.OnClickListener(){} must override a superclass method HelloAndroid.java /HelloAndroid/src/net/sgoliver line 24 Java Problem

con la solución de Juan también. Lo estoy probando con el Eclipse Helios instalado.

¿Alguien podría orientarme por favor?
gracias de antemano

Responder
sgoliver 21/01/2011 - 10:36

El error que comentáis sobre «The method onClick(View) of type new View.OnClickListener(){} must override a superclass method» se debe probáblemente a que estáis utilizando Java 5.
Como solución, podéis eliminar la anotación @Override previa al método onClick(), o bien utilizar Java 6 y configurarlo convenientemente en las opciones de Eclipse en «Preferences / Java / Installed JREs» y «Preferences / Java / Compiler».
Saludos.

Responder
Aleksandr 09/02/2011 - 23:12

Hola a todos, apenas he empezado hoy con esto de la programación java para android y he editado el archivo main.xml tal y como dice el tutoril, y cuando voy a guardarlo me da fallo en:

y

es decir, cuando lo guardo todo como está arriba, me indica que donde acabo de señalar hay fallos que no se puede poner ni @string/nombre ni @string/hola.
Haber si podeis ayudarme con esto porque puede que sea que no me he dado cuenta de algo anterior y por eso me de fallo.
Saludos y gracias de antemano.

Responder
Aleksandr 09/02/2011 - 23:42

Por cierto, tambien me he fijado, que el código fuente que has puesto para descargar es diferente al del artículo o por lo menos en el archivo main.xml y frmmensaje.xml del artículo no se parece nada al que está para descargar.
Por ejemplo en el código fuente que has puesto para descargar, el arhivo Frmmensaje.xml se llama FrmSaludo.xml y tiene un código distinto.
Un saludo.

Responder
Jachler 10/02/2011 - 9:31

A mí me pasa lo mismo que a Jose y Mei. No se muy bien como debuggear esto de Android, pero no se si tiene algo que ver como que pierde la referencia al .jar y hay que darle el path bien??

Responder
Augar 17/02/2011 - 8:43

Hola.

Yo también estoy empezando a aprender a programar un Android y también tenía el mismo error que Mei y alguno más, pero ya lo he resuelto.

La cuestión era que al declarar las variables txtNombre y btnHola para hacer referencia a los controles de la aplicación, lo había hecho como atributos de la clase y el método findViewById() genera la excepción correspondiente.

Si metemos esas dos líneas de código dentro del método onCreate() (Por ejemplo después de la llamada a setContentView()) el problema queda resuelto.

Espero que os sirva de ayuda.

Un saludo.

Responder
Viten 21/02/2011 - 19:20

Excelente tutorial.

Responder
Primeros pasos con Android: tutorial de App básica | victorpascual.es 23/02/2011 - 19:49

[…] idea, lo bueno y normal es hacerse un pequeño tutorial de inicio que dé las bases. Ahí va este: http://www.sgoliver.net/blog/?p=1316. Veamos qué tal va la cosa. Compartir […]

Responder
vivianasv 03/03/2011 - 1:42

hola,Estoy aprendiendo android, te felicito me parece una guia muy puntual.
=) gracias

Responder
Sergio 06/03/2011 - 4:45

estoy empezando en android y me ha servido de mucho tu artículo (en realidad, todo tu blog) quería dejarte los agradecimientos!

Responder
John Hurtado 08/03/2011 - 1:20

Hola, mil gracias por el tutorial. Me sale un error en la línea: setContentView(R.layout.frmsaludo);
Pareciera que frmsaludo no existiera, pero efectivamente si existe, está bajo res.layout. y no tiene errores.
Gracias por su ayuda.

Responder
John Hurtado 08/03/2011 - 4:38

Problema resuelto. Estaba import android.R lo quité y listo. Gracias

Responder
John Hurtado 08/03/2011 - 4:57

Juan, muchas gracias, tu ayuda fue muy oportuna.

Responder
Raiden 09/03/2011 - 12:59

Primero mil gracias por la currada de todos estos tutoriales, de verdad.

Tengo un problema, realice el tutorial completo y me da un error al ejecutarlo, para ver si era error mio, ejecuté tu codigo fuente, y me da el mismo error, asi que debo tener mal configurado algo del eclipse, aver si me podeis ayudar. El fallo es el siguiente:

http://i51.tinypic.com/5nu5it.png

Responder
Fermín 11/03/2011 - 10:14

Buaahh! Grandes tutoriales… No tenia ni idea de Java, pero tal como lo explicas todo, esto de desarrollar para Android me va ha resultar mucho mas fácil y divertido de lo que inicialmente creía. Gracias por la aportación a la comunidad, ya que apenas hay información en Español tan clara para desarrolladores novatos. Tu blog me va ha servir de gran ayuda. Para empezar ya lo tengo en «favoritos» de mi chrome.

Saludos!!

Responder
Raquel 16/03/2011 - 20:15

Felicidades por estes tutoriales! Me están ayudando mucho en el desarrollo de mi aplicación Android. Nada que ver con los libros que circulan por ahí. Te animo a que publiques un libro de programación Android! ;)

Responder
unmonje 24/03/2011 - 16:06

El tutorial es muy claro…
Lo lamentable es que a pesar de los medios tecnològicos disponibles,sigamos codificando de una manera tan incoherente…PAra esto, me quedo con -Assembler-, toda la vida.
Demasiadas letras para mi criterio.
Por poner un ejemplo,ya que es rutina pasar argumentos,deberia ser implicito al còdigo.
(Tengo 55 años , pogramo desde los 15)Saludos

Responder
Juanfran 10/04/2011 - 8:19

Un tutorial muy bueno. Si os da error es porque hay que meter las strings hola y nombre en el fichero strings.xml

Responder
ozqr 21/04/2011 - 5:18

Hola!
Estoy empezando con estos tutoriales, y me parece que hay bastante por hacer. Espero proximamente donar algo.
Solo unos detalles por si alguien tiene los mismo problemas que yo.
Yo estoy trabajando con MOTODEV, y no se si en la ID de Eclipse te importa las librerias conforme vas haciendo el codigo, pero conforme iba avanzando tuve q importar varias librerias para q el codigo no me marcara error, aunque reconozco que de esos errores, tuve una buena practica :). Tambien, al editar el HolaUsuario, me marcaba el @override como innecesario, aun asi, mi primera aplicacion en Android corrio perfectamente.
Saludos!

Responder
maldinibm 22/04/2011 - 12:55

Tutorial a medias, seguido al pie de la letra saltan mil errores. Muy malo.

Responder
sgoliver 22/04/2011 - 14:41

@maldinibm Tu comentario está completamente fuera de lugar y no tiene ningún valor. En caso de que tengas dudas o no te quede claro algo tienes disponible el código fuente completo al final del artículo, además no cuesta nada preguntar tus dudas, describir los errores que te aparecen por si alguien te puede ayudar, escribirme a mi correo electrónico para consultar… en definitiva, tienes muchas opciones antes de escribir comentarios como el que acabas de hacer. Saludos, y suerte en tu búsqueda de buenos tutoriales.

Responder
Shanty 22/04/2011 - 18:15

Yo tengo una duda. Según parece, después de crear el segundo layout, el frmmensaje, hay que crear la clase. Bien, creo la clase, y gracias al wizard de eclipse, le puedo decir que extienda de activity, pero no se cómo indicarle la interfaz que debe tomar.

Gracias.

Responder
sgoliver 22/04/2011 - 22:42

Una vez creado el layout de la segunda pantalla (frmmensaje.xml), creas una nueva clase que exienda de Activity y en su método onCreate indicas que debe tomar la interfaz del layout frmmensaje en la linea:

setContentView(R.layout.frmmensaje);

Responder
Shanty 23/04/2011 - 12:10

Gracias por responder tan pronto. Ya está. Lo que me pasa ahora es la compilación. He mirado en preferencias y tengo el java6, pero he tenido que quitar el Override del onClick para quitarme un error. Ahora me está petando lo de OnClickListener cannot be resolved to a type, así que voy a ver lo que decía Juan más arriba.

Excelente trabajo, gracias amigo.

Responder
Shanty 23/04/2011 - 12:33

Buah. Te explico, me faltaba el import android.view.View.OnClickListener; He vuelto a poner el Override en el onClick y compila.

Responder
definitivo 23/04/2011 - 23:57

Mi problema es el siguiente: Hice el codigo por mi cuenta y copiando el codigo suyo , pero igualmente me da el mismo error.

Compila perfectamente , pero cuando escribo el texto y le doy al boton , me salta un error que dice:

» The aplication Hola Usuario , (process net.agoliver) has stopped unexpectedly » Please , Tray again

de que puede ser el error ? , he visto que muchos habes tenido problemas con los import de R

yo lo que ice fue importar asi:

import net.agoliver.R;

ya que si no importaba me daba error en R , y me pedia que importara.

Responder
definitivo 24/04/2011 - 10:18

Yo he llegado a la conclusion que tiene que ser un error en los paquetes porque no es normal

Responder
Inverno 25/04/2011 - 21:16

definitivo: tenía el mismo problema que tu, y al cambiar en Preferences / Java / Compiler a 1.5 ya me funciona… prueba a ver si te va.

sgoliver: muchas gracias por este fantástico tutorial!

Responder
willy 28/04/2011 - 11:06

Gracias por el tutorial sgoliver. Estoy empezando a programar en Java para android y creo que me va a ayudar a adentrarme un poco en esto.

He seguido los pasos que pones pero me he encontrado con los siguientes problemas que he resuelto mirando los comentarios y el código fuente completo. Te lo comento por si consideras modificar el tutorial para que quede más claro.

1) Hace falta crear un fichero FrmMensaje.java e incluir en él la clase FrmMensaje. Aunque comentas que hay que crear una nueva actividad para FrmMensaje no me había quedado muy claro que lo que había que hacer era crear un nuevo fichero y darle ese nombre.
2) Hace falta incluir los import correspondientes en los .java
3) Hace falta incluir los strings «hola» y «nombre» en el strings.xml. ¿Porqué hay que hacer esto?
4) He tenido que borrar el @Override antes del OnClick para que me compile correctamente.

Hecho esto ya he conseguido que compile y arrancar el simulador, sin embargo no me aparece la aplicación en el simulador. Se queda una pantalla que dice ANDROID y no pasa de ahí. No me aparece ningún tipo de error. ¿Alguna sugerencia?

Responder
sgoliver 28/04/2011 - 12:16

Hola Willy, tal y como he comentado en otras ocasiones, este curso de Android presupone unos conocimientos previos y consolidados del lenguaje Java. Y los puntos 1, 2 y 4 que comentas tienen más relación con Java que con Android. De cualquier forma te paso mis comentarios cada uno de ellos:

1) Toda clase pública en java debe estar definida en un fichero .java con su mismo nombre.
2) En cada fichero .java se deben añadir siempre los import correspondientes a las clases/paquetes que se vayan a utilizar en su código.
4) Esto es debido simplemente a la versión de java instalada y/o configurada en tu IDE. Yo actualmente utilizo Java 6 y así lo tengo también indicado en las preferencias de Eclipse (Window/Preferences/Java/Compiler). De cualquier forma, como comentas, puedes eliminar el atributo @Override sin problemas.

En cuanto al punto 3, a mitad del artículo, al hablar de la propiedad android:text, comento las dos alternativas que existen a la hora de especificar el texto de un control. De todas formas lo repito también aquí:

1.- puedes indicar el texto directamente (por ejemplo: «hola»)
2.- puedes incluirlo en el fichero «strings.xml» con un identificador único (por ejemplo «ident») y hacer referencia a él posteriormente mediante una cadena del tipo «@string/ident».

Saludos.

Responder
willy 28/04/2011 - 15:52

Muchas gracias por aclararme las cosas, sgoliver.
Respecto al problema que tengo con el simulador, ¿tienes alguna idea?

Responder
Jordi 20/05/2011 - 10:53

Hola,

Primero de todo gracias por el tutorial ;)

A modo curiosidad, el error de forzar el cierre de la aplicación me daba si definía las variables

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

Antes del método onCreate de HolaUsuario.java (como variables globales). Si las defino dentro del método onCreate, me funciona correctamente.

Alguna idea de pq puede ser esto?

Gracias.

Saludos,

Jordi.

Responder
bounce 21/05/2011 - 18:13

Hola estimado, muchas gracias, muy buenos tutoriales, sin conocer nada de java, se me ha hecho relativamente facil son tu informacion, pero luego de realizado todos los pasos ejecuto la aplicación y me levante el emulador, pero solo dice «android» y no muestra nada de lo que he puesto segun el ejemplo, quien me puede echar una ayuda con este tema.

Muchas gracias.

Responder
josedo 24/05/2011 - 16:04

Hola, la solución al problema del botón es:

public class HolaUsuario extends Activity {

private EditText txtNombre;
private Button btnHola;

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

//Localizar los controles
txtNombre = (EditText)findViewById(R.id.TxtNombre);
btnHola = (Button)findViewById(R.id.BtnHola);

btnHola.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//Creamos el Intent
Intent intent = new Intent(HolaUsuario.this, FrmMensaje.class);

//Creamos la información a pasar entre actividades
Bundle b = new Bundle();
b.putString(«NOMBRE», txtNombre.getText().toString());

//Añadimos la información al intent
intent.putExtras(b);

//Iniciamos la nueva actividad
startActivity(intent);
}
});
}
}

Lo único que cambia es …new View.onClickListener()…..

Saludos y suerte con su desarrollo en Android

Responder
Oleurud 01/06/2011 - 0:41

Simple y llanamente: gracias sgoliver

Responder
Guille 02/06/2011 - 10:46

Hola!

Geniales los tutoriales, creo que me van a salvar la vida para poder aprender a programar en Android…. mil gracias! :)

El unico problema que encuentro es al intentar correr los codigos de este tuto, me sale un error en la linea del main.xml:

Button android:id=»+id/BtnHola»

el error que me sale es:
Error: No resource found that matchesthe given name (at ‘text’ with value ‘@string/hola’).

Que es lo que tengo que hacer para poder poner esto bien???

Espero vuestras respuestas! mil gracias por adelantado!!!

Responder
Lucia 03/06/2011 - 10:59

Hola chicos!
estoy intentando seguir este tutorial, pero no consigo ponerlo a funcionar… :(

despues de seguir todos los pasos y conseguir que no aparezca ningun error en el eclipse, al ejecutar la aplicacion en el movil me salta un aviso:

«La aplicacion HolaUsuario (proceso com.pruebas.lucia) se ha interrumpido inesperadamente.»

Como puedo hacer la depuracion para ver donde falla???
gracias chicos! :)

Responder
Pablo 09/06/2011 - 10:18

Muy buen tutorial, al principio no me funcionaba me salia el mismo error que a algunos compañeros: FORCE CLOSE.
Tenia declarados(
final EditText txtNombre = (EditText)findViewById(R.id.TxtNombre);
final Button btnHola=(Button)findViewById(R.id.BtnHola);)
dentro del metodo onClick.
Lo que hoze para que funcionase correctamente fue lo que dijo josedo, declarar los controles fuera del metodo (justo despues de la clase HolaUsuario):
public class HolaUsuario extends Activity {
/** Called when the activity is first created. */
private EditText txtNombre;
private Button btnHola;
@Override
public void onCreate(Bundle savedInstanceState) {

Buenisimo TUTO. Gracias sgoliver y gracias a los ke comentan porke entre todos podemos solucionar cosillas

Saludos

Responder
jahuso 11/06/2011 - 16:29

Gracias esta muy bueno el post, saludos desde colombia

Responder
AzagraMac 16/06/2011 - 21:29

Muy buen tutorial, muy muy practico.
En cuanto pueda te hago una donaciçon y asi de paso disfruto del curso en PDF.

tengo problemas con PayPal.

Un saludo

Responder
Escaleo 17/06/2011 - 23:49

Buenas a todos. Primero dar las gracias por el manual.
Me gustaría, si no es mucho problema, saber el número de ficheros que hay que tocar.

Por lo que he visto hemos tocado HolaUsuario.java, main.xml, frmmensaje.xml y FrmMensaje.java.

¿Alguien podría poner cómo ha quedado el código en cada uno de esos ficheros? Es que yo creo haber seguido los pasos y me da error al iniciar la aplicación.

Un saludo y gracias de antemano

Responder
sgoliver 18/06/2011 - 12:48

En caso de duda también puedes descargar el código fuente completo del artículo y compararlo con el tuyo. Si sigues teniendo problemas no dudes en escribir otro comentario. Saludos.

Responder
Irina 20/06/2011 - 11:44

Hola, muchas gracias por este tutorial la verdad me está ayudando muchísimo, gracias!
Tengo una duda que tal vez parece bastante tonta (lo es xd) pero sin eso no puedo seguir.
No sé como crear el fichero frmmensaje.xml, y donde ubicarlo, aunque supongo que en la parte de layout por tu explicación.
Un saludo.

Responder
John 30/06/2011 - 14:29

Para los que partimos de cero como yo, das muchas cosas por supuestas de antemano. He intentado seguir el curso durante 3 días y sigo estancado en esta página. Así que me voy a buscar otro. Aún así, gracias por tu esfuerzo y dedicación.

Responder
sgoliver 30/06/2011 - 15:46

Hola John, no das muchos detalles, ¿Qué dudas tienes? ¿Dónde te quedas bloqueado? ¿Son dudas específicas de Android, o del lenguaje Java, o de Eclipse? Tienes disponibles mi dirección de correo electrónico y sobre todo los comentarios del blog, donde cualquier lector te puede ayudar con tus dudas. Saludos.

Responder
alberto 30/06/2011 - 18:03

Hola gracias por el tuto muy bueno, mi problema es que cuando le doy click al boton para pasar al saludo me dice que la aplicacion se ha interrupido inesperadamente y se debe forzar el cierre, trate de seguir paso a paso el codigo y el error se presenta cuando llego a esta linea

startActivity(intent);

auxilio por favor que no se que hacer
el codigo que use es este:

package Android.Hola;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {

/** Called when the activity is first created. */

private EditText txtNombre = null;
private Button btnHola = null;

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

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

btnHola.setOnClickListener(buttonListener);
}

//Error: OnClickListener cannot be resolved to a type
private OnClickListener buttonListener = new OnClickListener()
{
@Override
public void onClick(View arg0) {
Intent intent = new Intent(MainActivity.this, FrmSaludo.class);

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

startActivity(intent);
}
};

}

Responder
alberto 30/06/2011 - 19:07

ya pude solucionar mi problema, el problema era en el manifiesto de la aplicacion el archivo AndroidManifest.xml

faltaba esta linea

ahora mi pregunta seria como generar este archivo correctamente desde netbeans y de forma automatica por que tuve que hacer la correción manual

Responder
Yagami 29/07/2011 - 23:18

Holas, muy bueno el articulo. Felicidades.

Io estoy usando Java 6 y aun asi tuve que retirar el override del onClick.

Willy, el emulador tarda bastante en arrancar, io espero al menos 5 minutos hasta que aparece el display del «celular».

Responder
carlos 12/08/2011 - 3:52

Hola, por fin conseguiré pasar página!! Para los que como yo no han tenido bastante con quitar el override y declarar las variables fuera de la función para superar el FORCE CLOSE les aconsejo que miren en el AndroidManifest.xml a ver si tienen estas dos líneas

Las dos me daban errores. La segunda en particular por algún motivo (copiar los archivos del ejemplo con la aplicación ya creada) se borro, y por eso no funcionaba el evento.

saludos y gracias por el tutorial

Responder
huelina 21/09/2011 - 16:37

Muy buen tutorial, lo estoy siguiendo y voy aprendiendo desde 0. MUCHAS GRACIAS!!! :D

Responder
qelqtpb 28/09/2011 - 11:51

Pues me da error al iniciar la aplicacion en el avd

Responder
franaren 30/09/2011 - 19:38

Buen tutorial, muy claro.

Saludos

Responder
Anónimo 06/10/2011 - 12:31

Hola a todos!

Al compilar se me ha autogenerado un file en res/values/ llamado strings.out.xml, está completamente vacío y me da el siguiente error:

«Multiple annotations found at this line:
– Premature end of file.
– error: Error parsing XML: no
element found»

¿Alguna idea?

Responder
alfredo 10/10/2011 - 17:24

Por fin!!!, sin saber ni java ni eclipse, al final el error de exepción en la segunda pantalla era porque AndroidManifest.xml tenia declarada ‘FrmSaludo’ en minusculas.

Gracias por el tutorial, pero hay inconsistencias que hace que alguin que no sepa no pueda avanzar.

Responder
Mibu 12/10/2011 - 20:13

Gracias por tu esfuerzo Sgoliver, pero como te decian hace tiempo por ahí arriba, para los que partimos de cero esto se hace imposible. Das ciertas cosas por hecho que nosotros no podemos ni imaginar y nos hablas de la estructura como si ya la conociesemos en profundidad cuando has dado unas nociones básicas.

Llevo todo el día estancado en esta página y es imposible. No se continuar a partir de aquí:

«Para ello utilizaremos el método findViewById() indicando el ID de cada control, definidos como siempre en la clase R:

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

No se ni donde debo pegar esto, ni que es el método que comentas.

Eso sin contar que cuando modifico los archivos que indicas me marca errores que no se si se corrigen solos avanzando o lo estoy haciendo mal…

En fin, gracias por tu esfuerzo, no me considero torpe, pero de aquí no consigo pasar.

Espero que te tomes esto como una crítica constructiva que es lo que pretende ser, y te repito que admiro profundamente tu esfuerzo y trabajo.

Algo que creo que podría ayudar, seria más pantallazos, los que vamos desde cero nos orientamos muchísimo viendo toda la screen del programa, porque podemos ver en que rama o rachivo estas trabajando concretamente.

Gracias y un saludo!

Responder
sara 14/10/2011 - 16:07

Hola,

Alguien me pega el contenido de androidmanifest? Es que a mi también se me cierra después de poner el nombre y clickar el botón y no sé porqué. Voy a intentar cambiar el androidmanifest a ver si es eso y si no volveré a preguntar. Gracias!

Responder
Fapes 20/10/2011 - 2:56

Hola… Quisiera agradecerte por este gran aporte… Te comento que estoy pensando en adquirir algunos libros sobre programacion en android y quisiera que me recomendaras algunos basado en tu experiencia… Me gustaria tambien poder adquirir tu pdf, pero de momento no cuento con tarjeta de credito ni cuenta en paypal o algun otro medio para poderte hacer un aporte, asi que tendre que esperar…

Gracias de antemano…

Responder
Fapes 20/10/2011 - 9:27

3:30 am… Acabo de terminar el primer ejemplo y ya quiero seguir con otros… Ademas añadi un boton para regresar a la ventana principal.. xD.. Gracias por el Tuto, muy bueno…

Responder
sara 26/10/2011 - 15:08

Hola otra vez,
lo que me pasaba a mi es que había escrito OnCreate en vez de onCreate en la segunda activity. Le había quitado el Override y me quedé tan pancha.

Lo dejo aquí escrito por si le pasó a alguien también.

Responder
jose94h 27/10/2011 - 19:50

Saludos.

Para los que les pasa el error de forzar el cierre de la aplicación, ya he encontrado el error y es que en la actividad HolaUsuario al final se cerraron mal las llaves.
El final de la actividad debe quedar así:
}
}
);
}
}

Espero les sirva. A mi me funcionó.

Responder
TheCharlieX 08/11/2011 - 21:21

El mejor hola mundo de android en español en la web Gracias

Responder
tylerdurden 09/11/2011 - 6:37

hola!!! muy buen tutorial.. tiene un par de detalles a corregir en el código pero son bastantes fáciles de solucionar y te ayudan a aprender mas…

gracias!!!!!!!!!

Responder
Alvaro 15/11/2011 - 18:50

Hola,
muchas gracias por este tutorial. Me he atascado.
Al ejecutar el proyecto me dice que contiene errores que debo solucionar antes. He importado tu proyecto y me dice lo mismo (aunque con menos errores). Los errores que aparecen abajo son estos:

Description Resource Path Location Type
The project was not built since its build path is incomplete. Cannot find the class file for java.lang.Object. Fix the build path then try building this project HolaUsuario Unknown Java Problem
The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files HolaUsuario.java /HolaUsuario/src/net/sgoliver line 1 Java Problem
Unable to resolve target ‘android-4’ HolaUsuario Unknown Android Target Problem

Aunque luego hay varias marcas de error en varias lineas.
Sé que es poca información pero, ¿me puedes ayudar?
Muchas gracias.
Saludos. Álvaro.

Responder
sgoliver 15/11/2011 - 20:21

Hola Alvaro,

por la información que me das me parece que no tienes bien configurado el entorno de desarrollo para desarrollar en Android, o bien que no estás importando el proyecto correctamente.

¿Utilizas Eclipse? ¿qué versión? ¿Has seguido los pasos del primer tutorial anterior para configurarlo todo correctamente?

Al margen de estas preguntas te animo a que hagas tu consulta en el nuevo foro de la web, por si otros usuarios también pueden ayudarte.

Saludos.

Responder
Antonio 15/12/2011 - 11:50

Buenas,
Tengo una duda, y no sé cómo resolverla.
Por ejemplo tenemos este código:
final EditText txtNombre = (EditText)findViewById(R.id.TxtNombre);

Con este código solo me aparece un campo del formulario el de Nombre, pero si quiero añadir más campos en el formulario no puedo declarar la variable final más de una vez, por ejemplo:
final EditText txtNombre = (EditText)findViewById(R.id.TxtNombre);
final EditText txtCodigo = (EditText)findViewById(R.id.editCodigo);
final EditText txtFecha = (EditText)findViewById(R.id.editFecha);

Cómo declaro la variable «final» para que se aplique a todos los EditText.

Responder
sgoliver 15/12/2011 - 12:22

Hola Sebastian, «final» no es el nombre de ninguna variable, sino tan sólo un modificador aplicado a las verdaderas variables, que son: txtNombre, txtCodigo y txtFecha. No hay ningún problema en utilizar el modificador «final» en todas ellas, puedes definir tantas como quieras de la forma que tú has escrito:

final EditText txtNombre = (EditText)findViewById(R.id.TxtNombre);
final EditText txtCodigo = (EditText)findViewById(R.id.editCodigo);
final EditText txtFecha = (EditText)findViewById(R.id.editFecha);

¿Qué error te da el compilador si lo haces así?

Saludos.

Responder
novato 16/12/2011 - 11:24

Hola llevaba una semanilla con androi y viendo tutoriales y al llegar a los intents me habia perdido mucho pero la verdad que tu forma de enseñarlo me ha gustado y he conseguido entender mas o menos como funciona. Muchas gracias y animo a que si puedes sigas con esto porque a mucha gente como yo que no sabemos casi nada de esto les ayudas mucho.

Un saludo

Responder
Martin 18/12/2011 - 7:28

Muchas Gracias loco! Me esta ayudando bastante tu tutorial, muy bueno. Gracias nuevamente! Muchos exitos!

Responder
Alexeiw 22/12/2011 - 14:18

Gracias, muy bien explicado, me ha sido de gran utilidad

Responder
Pablo 26/12/2011 - 23:29

Hola, he seguido todo y la única duda que me queda es en esta línea:
android:text=»$mensaje»>

Porqué se pone el dólar?

Gracias, un saludo.

Responder
sgoliver 27/12/2011 - 10:10

Hola Pablo, el dolar no significa nada, puedes poner lo que quieras o incluso dejarlo en blanco. Yo lo suelo poner simplemente para diferenciar los textos «de verdad» de los que están ahí sólo para ver cómo quedan en la interfaz. Piensa que ese mensaje lo vas a sobreescribir siempre con un mensaje personalizado. Saludos.

Responder
David 29/12/2011 - 10:36

Hola, me he puesto con tu tuto y me parece muy bueno. Despues de mi alabanza bien merecida, te expongo mi problema:

El código lo compilo con la API 2.2 y eclipse helios 6 (creo)
El tema está en que el compilador no me muestra errores, pero al ejecutar, el log me da esto:

12-29 09:27:24.078: W/dalvikvm(596): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
12-29 09:27:24.127: E/AndroidRuntime(596): FATAL EXCEPTION: main
12-29 09:27:24.127: E/AndroidRuntime(596): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{android.hola.usuario/android.hola.usuario.HolaUsuario}: java.lang.NullPointerException
12-29 09:27:24.127: E/AndroidRuntime(596): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
12-29 09:27:24.127: E/AndroidRuntime(596): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
12-29 09:27:24.127: E/AndroidRuntime(596): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
12-29 09:27:24.127: E/AndroidRuntime(596): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
12-29 09:27:24.127: E/AndroidRuntime(596): at android.os.Handler.dispatchMessage(Handler.java:99)
12-29 09:27:24.127: E/AndroidRuntime(596): at android.os.Looper.loop(Looper.java:123)
12-29 09:27:24.127: E/AndroidRuntime(596): at android.app.ActivityThread.main(ActivityThread.java:4627)
12-29 09:27:24.127: E/AndroidRuntime(596): at java.lang.reflect.Method.invokeNative(Native Method)
12-29 09:27:24.127: E/AndroidRuntime(596): at java.lang.reflect.Method.invoke(Method.java:521)
12-29 09:27:24.127: E/AndroidRuntime(596): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-29 09:27:24.127: E/AndroidRuntime(596): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
12-29 09:27:24.127: E/AndroidRuntime(596): at dalvik.system.NativeStart.main(Native Method)
12-29 09:27:24.127: E/AndroidRuntime(596): Caused by: java.lang.NullPointerException
12-29 09:27:24.127: E/AndroidRuntime(596): at android.app.Activity.findViewById(Activity.java:1637)
12-29 09:27:24.127: E/AndroidRuntime(596): at android.hola.usuario.HolaUsuario.(HolaUsuario.java:15)
12-29 09:27:24.127: E/AndroidRuntime(596): at java.lang.Class.newInstanceImpl(Native Method)
12-29 09:27:24.127: E/AndroidRuntime(596): at java.lang.Class.newInstance(Class.java:1429)
12-29 09:27:24.127: E/AndroidRuntime(596): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
12-29 09:27:24.127: E/AndroidRuntime(596): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)
12-29 09:27:24.127: E/AndroidRuntime(596): … 11 more

He revisado toco con lupa, solo se me ocurre que sea la API de java. ¿Que me cuentas master?

Gracias

Responder
sgoliver 29/12/2011 - 11:23

Hola David, no muestras el código que estás intentando ejecutar, por lo que poco te puedo decir. Si nos das más información podemos volver a intentarlo.

De cualquier forma, te animo aque este tipo de problemas los expongas en el nuevo foro de la web, así otros usuarios también pueden ayudarte.

Saludos.

Responder
David 30/12/2011 - 9:35

Hola, creo que ya lo he expuesto en el foro principal, no obstante, te comento:
Creo que el fallo no proviene del código, sino de algo que se auto genera, ya que he intentado hacer una aplicación parecida, una pantalla que llama a otra, y me ha dado el mismo error, a parte, cuando suprimo los cambios y dejo el código como al principio, sigue dandome el error al ejecutar. Solo use Intent, View y OnClickListener. ¿Se te ocurre algo?

Responder
David 30/12/2011 - 15:38

Tema resuelto. Gracias. la explicación a mi problema me la han resuelto aqui http://www.sgoliver.net/foro/viewtopic.php?f=5&t=92

si has tenido el mismo problema hay biene la solución y la explicación de porque ocurre.

Gracias a todos

Responder
ivan 02/01/2012 - 3:16

Por que pones a las variables el modificador final? hay algun motivo para usarlas o es simplemente por «capricho».

Responder
Diego 03/01/2012 - 18:28

Venga, lo que necesitaba para entender los intent’s . En hora buena Gracias por la colaboración.

Responder
jose40and 03/01/2012 - 22:02

En primer lugar felicitaciones i agradecimientos por este tutorial
Tengo dos errores:
El primero en la que me dfine el error como:

tag appears after tag

y el segundo en <EditText android:id="@+id/TxtNombre" definido como :

This text field does not specify an inputType or a hint.

Agradeceria ayuda con esto.

Ademas he observado que en las fuentes no esta el archivo frmmensaje.xml y tampoco se indica la ubicacion de las lineas :

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

que tambien pedia otro usuario.

Responder
Alfonsito 11/01/2012 - 19:36

Gracias por todo.
Veo que a la gente le da problemas y a mi me los dará tambien pero por ahora
tengo leña para el fuego gracias a esto.

Será quizás una tontería lo que digo pero » package=»net.sgoliver» » en esa linea si hacemos copy paste nos cascará la aplicación y supongo que el archivo xml habrá que definirlo en orden debajo el main.xml … No sé si es suponer demasiado.

En cualquier caso reiterar mi agradecimiento.

Responder
RSA 14/01/2012 - 13:27

Primero felicitarte por su aporte. Y ahora una pregunta.
He realizado el ejemplo, pero en la segunda pantalla he puesto un botón para volver a la primera, pero cuando vuelvo el edittext esta vacío, ¿como se podría hacer para que aparezca el último contenido que se haya introducido?
Gracias

Responder
salo 15/01/2012 - 23:45

Hola, muy interesante, muchas gracias es el mejor tutorial que he consultado.

Es posible que me indiques como pasar el programa creado a mi dispositivo móvil para probarlo allí?

Responder
Christian 16/01/2012 - 3:03

Muchas gracias por el tutorial! Excelente para los que comenzamos desde cero :D

Responder
Diego 18/01/2012 - 12:46

Buenas. Ante todo gracias por el tutorial, pero quisiera exponer mi problema, y es que no me genera la clase R.

Gracias

Responder
admin 18/01/2012 - 13:03

Hola Diego, eso suele ser debido a algún error en alguno de los layout XML. ¿Estás utilizando directamente el XML que proporciono con el código fuente, o lo has escrito tú desde cero o le has realizado alguna modificación? Revisa que no haya ningún error en esos ficheros.

Responder
Diego 18/01/2012 - 13:26

me da error el fichero main.xml, en las lineas android:text=»..»

Responder
Diego 18/01/2012 - 13:31

los he revisado y no veo que haya algún problema, también tengo que pulsar el botón menu del emulador para que ejecute la aplicación, en este caso la de los ficheros que has dejado

Responder
Diego 19/01/2012 - 13:23

Esto es desesperante, le he dado mil vueltas, he reescrito el codigo muchas veces, en el orden del tutorial, y ahora encima, el proyecto importado de los ficheros que has proporcionado no lo inicia el emulador

Responder
sgoliver 19/01/2012 - 16:31

Hola Diego, por que no expones tu problema en el foro y nos adjuntas el código que te da error para que así podamos intentar saber que está ocurriendo. Saludos.

Responder
cristian 21/01/2012 - 4:32

que tal, este codigo donde va?

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

Responder
sgoliver 21/01/2012 - 15:27

Hola Cristian, al final del artículo tienes disponible el código fuente completo, que puedes cargar directamente en Eclipse para estudiarlo cómodamente.

Responder
Alessio 21/01/2012 - 15:20

Muy bueno el artículo, solo una duda que no me quedó claro:
¿Donde se especifica el texto que va en el TextView y en el botón?? (el que pone «Escribe tu nombre» por ejemplo) Me está volviendo loco, no se donde lo has puesto.

Responder
cristian 21/01/2012 - 21:18

Hola, tengo 2 errores que me detienen en HolaUsuario.java

1.- «The value of the local variable txtNombre is not used»

Codigo

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

2.- «The method onClick(View) of type new View.OnClickListener(){} must override a superclass method »

Codigo

public void onClick(View v) {

Un error en Androidmanifest.xml

Error: No resource type specified (at ‘icon’ with value ‘@drawable’).

Codigo

<application android:icon="@drawable/icon"

Responder
cristian 21/01/2012 - 21:55

ya lo solucioné, en HolaUsuario.java eliminé @Overrideque estaba de más y en androidmanifest.xml cambié @drawable/icon por @drawable/ic_launcher y listo!

Responder
Mejacor 26/01/2012 - 1:22

cuando corro la aplicacion me da un error en el emulador «la aplicacion HolaUsuario(proceso mejacor.net) se ha interrumpido inesperadamente. intentalo de nuevo»

Responder
Mejacor 26/01/2012 - 1:37

bueno mis panas, este tutorial esta como manda la ley, a ver si con estos aprendizajes consigo trabajo, me encanta esto….

Responder
Ricardo Vallejo 06/02/2012 - 21:07

Ola…cuando dices crear un njuevo fichero frmmensaje.xml. En Eclipse voy a File New….????

Y en que carpeta lo creo?…..al crearlo en la misma carpeta del main.xml, sale un build error, que tambien afecta el main.xml y a pesar que elimine el archivo frmmensaje.xml, no soy capaz de corregir el archivo y toca volver a empezar…

Podrias ayudarme….el que no pregunta no aprende…

Aprovecho para felicitarte y agradecerte el esfuerzo de este curso, desde colombia.

Ricardo

Responder
Veronica 07/02/2012 - 4:40

Hola estuve probando tu codigo y me da un un error :

R cannot be resolved to be a variable…. a que se debe? tengo exactamente igual que tu codigo. Gracias por la ayuda! :D

Responder
fcohma 11/02/2012 - 0:56

Esta muy bien, gracias. Sorprenderé a mi novia personalizando una sencilla aplicación para el celular, este 14, pero en realidad el sorprendido seré yo.

Responder
Nicolas 14/02/2012 - 18:19

Disculpa pero estaria bueno que digas en que parte va cada codigo fuente porque yo por ejemplo no se donde poner
final EditText txtNombre = (EditText)findViewById(R.id.TxtNombre);
final Button btnHola = (Button)findViewById(R.id.BtnHola);

Responder
sgoliver 14/02/2012 - 21:01

Hola Nicolás, intentaré dejarlo algo más claro, pero de cualquier forma al final del artículo puedes descargar el código fuente completo, donde puedes consultar dónde va cada cosa. Saludos.

Responder
Gustavo 05/03/2012 - 19:29

Buenas hay algo que yo no logro entender, en donde colocas el texto «Escribe tu nombre:» el cual muestar la etiqueta de la primera activity. He releido el articulo y no logro encontrar donde le pasa este valro a la etiqueta.

Estan geniales tus articulos. Gracias por compartirlos.

Responder
David Pulido 06/03/2012 - 4:25

A mi me pasa lo mismo que a Ricardo Vallejo al crear el archivo en la carpeta del main.xml.

Exelente articulo Saludos!!

Responder
joan 08/03/2012 - 10:42

Hay partes que nose que hacer, ya que necesito modificar partes del fichero «R» y no me deja, por ejemplo al poner este codigo «R.layout.frmmensaje» me dice que debo ponerlo en el R y si pongo a mano lo que tu tienes en el código de R.java (public static final int frmsaludo=0x7f030000;) me sale este error » R.java was modified manually! Reverting to generated versión!»
Agradecería tu ayuda!
Y Gracias por este grande tutorial!

Responder
joan 08/03/2012 - 10:48

Gustavo eso tienes que ponerlo en res/values/string.xml allí pones el nombre del String y luego la frase que quieres que contenga (Escribe tu nombre:) en el código fuente que esta subido puedes verlo

Responder
Johanny 12/03/2012 - 5:18

el tutorial está bueno, sin embargo falta aclarar algunas cosas en cuanto al código:

primero: olvidó poner las clases a importar: (Estas son las que van en HolaUsuario.java)

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.Button;
——————————————————————
el código de HolaUsuario.java quedaría algo así(yo cambié los id de mis controles:)

package hola.usuario;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class HolaUsuario extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

final EditText txtNombre = (EditText)findViewById(R.id.editText1);
final Button btnHola = (Button)findViewById(R.id.button1);

btnHola.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(HolaUsuario.this, FrmMensaje.class);

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

startActivity(intent);
}
});

}

}

Responder
Johanny 12/03/2012 - 5:23

segundo:

faltan los imports para el .java FrmMensaje:

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

——————————————–
tercero:

básicamente en el Manifiest se debe agregar esta línea:

——————————————–

creo que con esto aclarado podemos prescindir del Copy/Paste ;)

Responder
Andrés Rodríguez E 13/03/2012 - 2:10

Hey que tal. me pasa exactamente el mismo problema que tienen Ricardo Vallejo y David Pulido, en realidad no tengo idea de donde tengo que crear el fichero frmmensaje.xml. Me gustaría que me ayudaran con ese problema, para poder montar este mismo ejemplo. Gracias desde Colombia.

Responder
Andrés Rodríguez E 13/03/2012 - 3:08

Hola Nicolas tengo entendido que:

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

lo puedes poner dentro del método onCreate que va despues de la declaración de la clase HolaUsuario: public class HolaUsuario extends Activity

asi:
public class HolaUsuario extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

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

}
}

Responder
David 15/03/2012 - 18:12

me peta cuando pongo el nombre y no se dond tengo el fallo
al darle al boton hola me peta

Responder
PhobosDBM 23/03/2012 - 8:50

Sin olvidar que hay que declarar la clase FrmMensaje como activity en el Mainfest.
No sabía esto, y al ver que el programa petaba, lo descubrí introduciendo el startActivity() dentro de un try-catch mostrando un toast.

Responder
admin 23/03/2012 - 11:01

Efectivamente, tal como indica en el artículo hay que declarar la clase FrmMensaje en el AndroidManifest.xml

Responder
Victor 27/03/2012 - 21:40

Hola!

Buen tutorial, a ver si soy capaz de seguirlo… Por el momento estoy atascado en el mismo punto que Joan (creo). Es decir, en las líneas:

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

me marca errro en «id» y me indica «id cannot be resolved or is not a field»

Diría que es porque no aparece en «R», pero no se puede modificar a mano, no? Es posible que «R» se actualice automáticamente al realizar algún proceso? Con cual?

A ver si alguien me tira un cable…

Un saludo!

Responder
Soldier 02/04/2012 - 17:39

Buenas, disculpa tengo problemas con este primer proyecto, que yo sepa y como haya leído cuando escribes en los XML los IDs o @Strings automaticamente en el R.java y en el strings.xml tienen que generarse sus respectivos campos pero no lo hace y me da errores, 2 de ellos en el main.xml son:

Couldn’t resolve resource @string/nombre
Couldn’t resolve resource @string/hola

Nota: tuve que editar manualmente el R.java ya para que en el archivo HolaUsuario.java reconociera los campos.

Espero me aclaren mi duda, gracias!

Responder
opensuse 10/04/2012 - 7:57

bueno gracias por el tuto, pero creo que deberias revisarlo y modificarlo por que tiene cosas mal, por ejemplo en tu código fuente esta un FrmSaludos.java, en la explicacion no se menciona, asi como donde va cada codigo y por que.. eso si hace que uno se pierda…. ami en lo personal me salio errores en el main.xml

error: Error: No resource found that matches the given name (at ‘text’ with value ‘@string/hola’).
error: Error: No resource found that matches the given name (at ‘text’ with value ‘@string/nombre’).

siguiendo exactamente lo que se menciona.

saludos

Responder
emebé 11/04/2012 - 8:51

Hola Soldier. Ese fallo también me salía a mi. Estoy empezando con android así que no se si mi explicación es la más adecuada, pero lo intentaré xD.

Tras mucho mirar de forma amenazante el código a ver si me daba algún tipo de respuesta me fijé que esos dos elementos deberían haber quedado registrados en la clase R y por algún extraño motivo no aparecían por ningún lado, por lo que tomé la determinación de poner esto

android:text=»@+string/nombre»

android:text=»@+string/hola»

Escribiendo esto fue cuando la aplicación definitivamente dejó de darme errores y me funcionó. No estoy seguro de que sea la mejor solución (tampoco se si la única), pero al menos funciona.

Responder
emebé 11/04/2012 - 12:17

Definitivamente me he dado cuenta que ambos elementos sirven para ponerle nombre al campo de texto y al botón, por lo que finalmente he optado por esta opción:

android:text=»nombre»

android:text=»hola»

Espero que les sirva.

Responder
Daga 19/04/2012 - 9:06

Excelente tutorial!!! Gracias por tu esfuerzo, me va a venir genial ahora que estoy interesada en meterme en el mundo del desarrollo de aplicaciones para Android :D

Responder
Guille 20/04/2012 - 5:01

Hola e leido bastante tu tutorial, y me a parecido muy bueno, he aprendido en tan solo 1 semana montones de cosas, quiero hacerte una recomendación, y es que en algunos ejemplos de código el lector se queda corto o se pierde, por ejemplo en la parte de crear la primera app , en

definidos como siempre en la clase R:

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

si el lector es novato en programación se queda corto, asi que seria bueno poner el codigo completo ;) y por otro lado, hay una herramienta muy buena llamada help and manual, te la recomiendo. de resto tu manual se puede decir que está impecable. un saludo

Responder
Chus 08/05/2012 - 14:04

Hola,

El tutorial está genial. Me ha costado un poco instalar todo y echrlo a andar pero cuando parecía que había solucionado todo lo ejecuto y no hace nada. No tengo errores, todo parece que está bien pero me sale la pantalla del emulador del móvil con la palabra android y ni labels, ni cuadro de texto ni nada.
Tengo la última versión de eclipse, del AVD, etc etc descargado todo ayer

Gracias,

Responder
Chus 09/05/2012 - 9:10

Ya me sale todo bien gracias.
Tenía un error en el xml y no había puesto bien el nombre de la clase java.

Responder
Emilio 14/05/2012 - 16:49

Hola a todos eh tratado de seguir el tutorial de echo lo voy a empezar de nuevo ya que eh tenido algunos errores como los que se mencionan en los comentarios pero por ejemplo nadie ah solucionado la pregunta de donde se va a crear el archivo de frmmensaje.xml!!! Si alguien me pude decir se los agradeceria!!!!!

Responder
Antonio 05/06/2012 - 12:55

Creo que le falta una cosita a este ejemplo y indicar que se importa en el top

Saludos

Responder
Droid 24/06/2012 - 16:37

Hola me falla , me sale el siguiente error «Couldn’t resolve resource @string/nombre», podrias ayudarme?,

Saludos!

Responder
Tabuntu 26/06/2012 - 2:55

a Emilio y los demás que no saben dónde crear los xml:

el frmmensaje.xml se debe crear en la misma carpeta que está el main.xml o sea en «res/Layout» sobre esta carpeta le das click derecho y seleccionas New/Android XML File, te va a salir una ventana donde le colocas el nombre «frmmensaje» y elegis el tipo que en este caso es un «LinearLayout».
También pueden darle click derecho sobre esa misma carpeta y elegir «New/Other» y en la carpeta android seleccionan «Android XML Layout File».

Responder
Albert 01/07/2012 - 4:24

Estimado que te parece cambiar las lineas de tu código por estas:

boton_hola.setOnClickListener(clickBotonHola);

y una función aparte, es más ordenado creo yo si tienes muchos eventos no debes tener todo junto en el constructor.

View.OnClickListener clickBotonHola = new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(HolaUsuario.this, FrmMensaje.class);
Bundle bundle = new Bundle();
bundle.putString(«NOMBRE», texto_nombre.getText().toString());
intent.putExtras(bundle);
startActivity(intent);
}
};

Responder
salomon 05/07/2012 - 20:30

Hola amigos, cuando pulsos el botón «Hola», la aplicación me lleva la vista ActionActivity del saludo, pero no me muestra nada.

Quizás alguien me pueda ayudar.

Responder
luis 08/07/2012 - 7:39

hola, alguien podria poner el codigo completo nomas para checarlos por que me salen errores

Responder
luis 08/07/2012 - 7:41

#droid oye eso erroe espor que tienes que declarar las variables tipo string, ,, agregan en face porfa enrique_alfa_@hotmail.com

Responder
OscarSith 11/07/2012 - 4:52

Muy buen POST
Así debe ser aprender desde las bases…

Probé modificando algo pequeño como poder usar el objeto bundle de la clase FrmMensaje que viene en el metodo:
protected void onCreate(Bundle savedInstanceState)

así ya no es necesario hacer otra instancia de la clase Bundle

savedInstanceState = getIntent().getExtras();
txtMensaje.setText(String.format(«Hola %s», savedInstanceState.getString(«nombre»)));

Responder
Litos 23/07/2012 - 17:57

El tutorial está muy bien pero faltan muchas cosas por explicar. Porque al ir cambiando el código el R no se cambia solo, o al menos a mi. Luego no explicas donde hay que poner cada cosa.

Al final he optado por probar tu código pero me da errores, así que tampoco lo he podido probar. Me sale todo el rato un NullPointerException.

En cualquier caso gracias por el curro.

Responder
antonio 08/08/2012 - 10:32

hola, el ejemplo lo he seguido y me da este error al ejecutar

Emulator] could not get wglGetExtensionsStringARB

creo que es porque no tengo la versión de openGL actualizada, que puedo hacer si tengo un portatil con windows XP 32

por cierto, el manual esta muy bien explicado

gracias
un salu2

Responder
antonio 08/08/2012 - 21:21

he mirado los drivers de la tarjeta grafica y estan correctos
este es el log completo, el cual me deja entrar en el emulador pero no el teclado aparece inhabilitado, solo aparece habilitado la parte del menu

alguna ayuda
muchas gracias

[2012-08-08 19:24:58 – net.sgoliver.HolaUsuario] ——————————
[2012-08-08 19:24:58 – net.sgoliver.HolaUsuario] Android Launch!
[2012-08-08 19:24:58 – net.sgoliver.HolaUsuario] adb is running normally.
[2012-08-08 19:24:58 – net.sgoliver.HolaUsuario] Performing net.sgoliver.HolaUsuario activity launch
[2012-08-08 19:24:58 – net.sgoliver.HolaUsuario] Automatic Target Mode: launching new emulator with compatible AVD ‘Dispositivo’
[2012-08-08 19:24:58 – net.sgoliver.HolaUsuario] Launching a new emulator with Virtual Device ‘Dispositivo’
[2012-08-08 19:25:12 – Emulator] Failed to create Context 0x3005
[2012-08-08 19:25:12 – Emulator] emulator: WARNING: Could not initialize OpenglES emulation, using software renderer.
[2012-08-08 19:25:12 – Emulator] could not get wglGetExtensionsStringARB
[2012-08-08 19:25:12 – Emulator] could not get wglGetExtensionsStringARB
[2012-08-08 19:25:12 – Emulator] could not get wglGetExtensionsStringARB
[2012-08-08 19:25:12 – Emulator] could not get wglGetExtensionsStringARB
[2012-08-08 19:25:12 – Emulator] could not get wglGetExtensionsStringARB
[2012-08-08 19:25:12 – Emulator] could not get wglGetExtensionsStringARB
[2012-08-08 19:25:12 – Emulator] could not get wglGetExtensionsStringARB
[2012-08-08 19:25:12 – Emulator] could not get wglGetExtensionsStringARB
[2012-08-08 19:25:12 – net.sgoliver.HolaUsuario] New emulator found: emulator-5554
[2012-08-08 19:25:12 – net.sgoliver.HolaUsuario] Waiting for HOME (‘android.process.acore’) to be launched…
[2012-08-08 19:26:04 – net.sgoliver.HolaUsuario] WARNING: Application does not specify an API level requirement!
[2012-08-08 19:26:04 – net.sgoliver.HolaUsuario] Device API version is 7 (Android 2.1-update1)
[2012-08-08 19:26:04 – net.sgoliver.HolaUsuario] HOME is up on device ‘emulator-5554’
[2012-08-08 19:26:04 – net.sgoliver.HolaUsuario] Uploading net.sgoliver.HolaUsuario.apk onto device ‘emulator-5554’
[2012-08-08 19:26:05 – net.sgoliver.HolaUsuario] Installing net.sgoliver.HolaUsuario.apk…
[2012-08-08 19:26:26 – net.sgoliver.HolaUsuario] Success!
[2012-08-08 19:26:26 – net.sgoliver.HolaUsuario] Starting activity net.sgoliver.HolaUsuario on device emulator-5554
[2012-08-08 19:26:34 – net.sgoliver.HolaUsuario] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=net.sgoliver/.HolaUsuario }

Responder
Saul Cardenas 11/08/2012 - 14:30

No hay la carpeta res en «Hello World»

Responder
antonio 15/08/2012 - 11:16

lo de la carpeta «res» lo dices por mi?
he probado en otro ordenador y me da el mismo fallo, cosa rara, alguna ayuda

ademas estoy probando con virtualbox pero al llegar a eclipse no me lo reconoce

si alguien puede ayudar, perfecto
muchas gracias

Responder
Laura 15/08/2012 - 22:13

Genial, nunca me había puesto tan contenta al programar un «Hola Mundo», jajaja. Me encanta el tutorial, muchas gracias Salvador.

Responder
Master 16/08/2012 - 18:22

Una pregunta… en el fichero frmmensaje.xml tienes lo siguiente:

Que significa $mensaje en el TextView…

Gracias.

Responder
Fernandido 28/08/2012 - 10:55

Hola, ante todo agradecerte este manual y el tiempo que dedicas a enseñar a gente como yo. El curso me está gustando y espero terminarlo.
Yo vengo que programar en java y otras tecnologías y más o menos se de que va esto, aunque al introducirme en Android he visto que algunas cosas se me complicaban con tonterías.
Te las cuento por si quieres añadirlas al manual o por si alguien le puede servir. Tienes ganado el cielo con tanto comentario de tantas índoles.

Respecto a los imports. He visto que ya se comenta, para alguien algo «pez» en este tema, se puede solucionar pulsando las teclas CTRL + MAY + O a la vez. De esta manera se completan los imports, aunque «ojo»!, puede introducirte alguna clase que no sea exactamente la que quieres. (onClick ….)

Respecto al fichero main.out.xml que aparece sin razón y hace desaparecer la clase R fallando todo el ejemplo. El problema es que intentamos hacer Run (Ejecutar) desde la ventana que nos muestra los layouts. Si nos ponemos en cualquier clase java, no dará ese error. Parece mentira pero así es. Esto me ha hecho volverme loco hasta que he visto este post (http://mobilecreations.blogspot.com.es/2012/03/premature-end-of-file-mainoutxml.html)

Mil gracias

Responder
admin 28/08/2012 - 12:53

Hola Fernandido, te agradezco los comentarios. Estoy en pleno proceso de actualización de algunos artículos del curso y son bienvenidas todas las ideas/propuestas para mejorar los contenidos. Saludos.

Responder
Alex 29/08/2012 - 17:09

Buenas,

llevo un tiempo siguiendo los artículos que creas para este curso de Android, hasta ahora no había empezado a mirarme nada del curso porque aun estaba terminando de aprender algunos conceptos de Java.

Ahora ya he empezado con el curso y me encuentro con este Hola Mundo y he visto, y supongo que tu también, que cuando creas un nuevo proyecto para Android lo han cambiado de tal forma que ahora también se puede especificar el icono que tendrá la app y por último crear la Actividad. Tal vez cuando tengas tiempo puedas actualizar la entrada para añadir esas pequeñas novedades para los futuros usuarios que vengan a aprender a desarrollar en Android.

Se agradece todo tu trabajo por enseñarnos a desarrollar en Android :)

Un saludo

Responder
Jose L 31/08/2012 - 10:24

Buenas,

Ya he realizado todos los pasos de instalación tal y como indicas en el punto anterior. Sin embargo al intentar crear un proyecto nuevo de Android, no me aparece la ventana que pones en el blog, pero además indicas «…En primer lugar vamos a crear un nuevo proyecto Android tal como vimos al final del primer post de la serie.», y yo no lo encuentro. El caso es que las opciones que he podido ver son: File –> New –> Project –> Android application ó Android Project from existing code ó Android sample, etc.., y no sé cual es la correcta.
No obstante he probado a bajarme el codigo fuente que pones en el link de mas abajo y con la opción «Android Project from existing code», me da un error «Invalid priject description».

Y por otro lado si abro el codigo mediante File –> Open File –> elegir ficheros .java, etc, al intentar compilarlo me deja elegir el «ant».

Parece que algo se me escapa pero no sé que es. ¿Puedes ayudarme?.

Gracias y un saludo.

Responder
Revol89 05/09/2012 - 21:02

Excelente aporte, como todos han comentado, si uno se guía solo en el código que dice el capítulo se encontraran con varios errores. Se corrigen de la siguiente manera:

1) En main.xml, dentro del se agrega android:id=»@+id/LblNombre», es recomendable colocar un id por cada control o elemento de la interfaz gráfica.

2) En strings.xml se agregan las lineas.
Escribe tu nombre:
Hola

3) En HolaUsuario.java se importan las siguientes librerias para EditText, Button, Intent, setOnClickListener() y View.
import android.widget.EditText;
import android.widget.Button;
import android.content.Intent;
import android.view.View.OnClickListener;
import android.view.View;

4) En HolaUsuario.java, los 2 final, final EditText txtNombre y final Button btnHola se colocan dentro del método onCreate(), después del setContentView(R.layout.main);

5) En HolaUsuario.java, la función btnHola.setOnClickListener(new OnClickListener() { … }); se coloca dentro del método onCreate().

6) En FrmMensaje.java se importan las siguientes librerias para Activity, Bundle y TextView.
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

7) En frmmensaje.xml eliminar la línea android:text=»$mensaje», ya que no nos perjudica a la hora de ejecutar la aplicación.

Saludos y de nuevo, gracias por la página :)

Responder
AF 07/09/2012 - 16:36

Muy bueno el curso, muchísimas gracias a su autor. Es de agradecer que haya personas dispuestas a compartir sus conocimientos con todo aquel que lo necesite.

He visto algunos comentarios de personas que reciben el error:

«Couldn’t resolve resource @string/nombre_de_la_cadena».

No sé si llego a tiempo para ayudar, mi recomendación es que comprueben que han guardado los cambios en el archivo strings.xml. En mi caso, hasta que no lo he hecho, Eclipse no reconocía las nuevas cadenas que acababa de añadir.

A propósito, ¿sabe alguien si hay alguna diferencia de resultado apreciable entre programar la respuesta a un evento de pulsado de un botón mediante la construcción con setOnClickListener que se ve en este curso, y el uso del parámetro android:onClick al crear el botón en el archivo XML donde aparece el layout de la actividad?

Muchas gracias una vez más, y un saludo.

Responder
StanPad 08/09/2012 - 6:17

Hola muy bien explicados tus tutoriales, yo en cambio tengo un problema y es que cada vez que ejecuto el proyecto; el me habre la maquina virtual de android pero no me muestra nada ya que me envia un error «could not get wglGetExtensionsStringARB». Espero que me ayudes a solucionar dicho problema.

Responder
Jose 18/09/2012 - 22:35

Me pasa igual me aparese se detubo inesperadamente, cierre forsado

Responder
Desarrollando una aplicación Android | Android Wireless 30/09/2012 - 11:49

[…] Fuente original, creo que es el mejor tuto para iniciarse, asi pues, lo añado al portal, pero en es… […]

Responder
Sergio 10/10/2012 - 12:58

Ando siguiendo el tutorial usando las ultimas versiones de todo y hay varios detalles desactualizados en este articulo, los voy comentando por si Oliver se ve con ganas y le da un repaso:

1) Cuando dices que añadamos un nuevo fichero xml, me quede un poco parado… ¿como?: En el árbol del proyecto, botón derecho sobre la zona que quieras (da igual, prueba sobre «src» por ejemplo»), «New, Other» (o Ctrl+N) y luego «Android», y aquí tiene «Android XML Layout file».

2) Cuando se habla de añadir los dos «final» con las refs. a los controles, no dices donde se han de poner, me volvía loco: van dentro del OnCreate justo después del setContentView

3) Idem. cuando añades el onClickListener, va dentro del onCreate debajo de lo anterior.

4) Dices que se añada un código que comienza por «btnHola.setOnClickListener(new OnClickListener() {«, pero no funciona, le falta un «View.» y la versión actualizada sería: «btnHola.setOnClickListener(new View.OnClickListener() {«.

5) Justo debajo sigues con «@override» pero el compilador me dice que sobra.

Con esos cambios ya me compila todo!

Oliver, como ando siguiendo el curso paso a paso, te ire «informando» de estas cosas que vaya detectando.

Responder
admin 10/10/2012 - 21:27

Gracias Sergio, tendré en cuenta estos detalles, sobre todo ahora que estoy actualizando todos los artículos. Saludos.

Responder
andrew95434 12/10/2012 - 2:18

gracias por el curso esta muy bueno. el unico problema es que creo que en este articulo te das muchas vueltas para hacer algo relativamente facil. estuve leyendo el tutorial de android en http://developer.android.com/intl/es/training/basics/firstapp/starting-activity.html y me di cuenta que hace exactamente lo mismo pero sin la necesidad de pasar de intent a bundle, sino que deja el string creado siempre como un instant, y tampoco crea un metodo raro (no se si es un metodo pero se ve como uno) en medio del metodo onCreate()

Responder
Luis 12/10/2012 - 16:28

Excelente articulo, me ayudo a aclarar mucho los conceptos.. Felicitaciones

Responder
Miguel 12/10/2012 - 17:09

Hola.
He seguido el tutorial hasta esta pagina.
Me parece muy interesante y está muy bien explicado, pero al llegar a esa página no puedo seguir (mejor no se siguir). En el primer codigo que hay que modificar en /res/layout/main.xml no estás. Es decir cuando voy a esa me aparece el archivo /res/layout/activity_main.xml y no hay codigo por ningun lado

No se seguir.

Un saludo
Miguel

Responder
John Ortiz 13/10/2012 - 17:39

Excelente trabajo. Y una buena manera ‘inútil’ (como le dice su autor arriba) para introducir los conceptos básicos de la programación de aplicaciones móviles Android.

Lo ejecuté en un Galaxy S3 y funcionó según lo especificado.

Gracias.

Responder
Pablo 18/12/2012 - 16:03

Hola muchas gracias por tu tutorial, espero que me sirva de ayuda. He visto que el código que pones en el tuto es diferente al del codigo fuente que pones para descargar y despista mucho sobre todo a los noveles como yo. Aparte dejaria claro que el método btnHola.setOnClickListener y sus variables finales van exactamente dentro del oncreate.

Responder
Componentes de una aplicación Android | sgoliver.net blog 23/12/2012 - 18:20

[…] el siguiente artículo empezaremos ya a ver algo de código, analizando al detalle una aplicación […]

Responder
Sergio 23/12/2012 - 21:42

Amigo, excelente tutorial…. solo que tengo problemas con el ultimo paso en donde modificamos el archivo androidmanifest. xml, no se si podrías publicar completo el código fuente de este fichero para verificarlo con el mio…

Responder
Israel 29/12/2012 - 11:06

Hola , felicidades por el tutorial ,esta muy currado , pero mesalen varios errores al editar las lineas de comando a la izquierda de la ventana del tipo «txnombre cannot be resolve or is not a field» No estoy muy ducho en programacion asi que estoy unpoco perdido.POr cierto a alguien le ha funcionado?

Un saludo y gracias

Responder
Estadísticas del blog en 2012 | sgoliver.net blog 02/01/2013 - 20:41

[…] Por otro lado, las páginas más visitadas en el año 2012 han vuelto a ser con gran diferencia las dedicadas al Curso de Programación Android, especialmente el índice de contenidos, la sección dedicada a la obtención del curso en formato PDF, y los artículos iniciales sobre la instalación y configuración del entorno de desarrollo para Android, la estructura de un proyecto Android, y la creación de una aplicación Android sencilla de ejemplo. […]

Responder
noblejis 04/01/2013 - 2:51

Buenas, lo primero felicitarte por el curso.

Tengo el mismo problema que Israel. Creo que el error viene porque no se hace un «import android.R;» en MainActivity.java y en FrmSaludo.java. Por este motivo no encuentra los controles de la interfaz.

Aún así, a mi el error me sigue saliendo. He probado a limpiar el proyecto pero nada.

Responder
oscar 06/01/2013 - 0:57

Oígan alguien me podría decir por que me aparece Couldn’t resolve resource @string/nombre Couldn’t resolve resource @string/hola?

Responder
oscar 06/01/2013 - 0:59

se me olvidaba también me podrían decir porque me aparece this text field does not specify an input type or a hint o qué tengo que hacer?

Responder
oscar 06/01/2013 - 1:27

oigan ya resolvi lo que puse en el segundo comentario quisiera saber que hacer para corregir esto: NOTE: This project contains resource errors, so aapt did not succeed, which can cause rendering failures. Fix resource problems first.
y esto: error: Error: No resource found that matches the given name (at ‘text’ with value ‘@string/hola’). y por último esto: error: Error: No resource found that matches the given name (at ‘text’ with value ‘@string/nombre’).

Responder
Jose Andres 07/01/2013 - 20:25

Me pasa lo mismo que a oscar, es decir en el fichero activity_main.xml
no me reconoce android:text=»@string/nombre» /> ni el android:text=»@string/hola» />, me da el mismo error Error: No resource found that matches the given name (at ‘text’ with value ‘@string/hola’).
Tambien me da error en MainActivity.java en las lineas:
final EditText txtNombre = (EditText)findViewById(R.id.TxtNombre);
final Button btnHola = (Button)findViewById(R.id.BtnHola);
No reconoce los identificadores TxtNombre y BtnHola, he visto en el fichero fuente que éstos están definidos en el fichero R.java, pero este es un fichero autogenerado, ¿como hago para autogenerarlo?

Responder
Jose Andres 07/01/2013 - 21:14

Ya solucione lo anterior en el fichero strings.xml, que con las prisas no había visto la explicación, con esto parece que ya funciona

Responder
camilo russi 14/01/2013 - 20:59

Hola quisiera saber al compiliar el proyecto donde queda el apk, en donde puntualmente podemos escribir el nombre de la aplicacion difrente al del nombre del proyecto, verificar si podemos colocar a ese nombre caracteres en español como á,é,í,ó,ú,ñ o espacios.

Responder
Camilo 15/01/2013 - 6:50

Hola como estan tengo un pequeño inconveniente, ya quedo lista la aplicacion no tengo ningun error al parecer, pero al ejecutar con cualquier emulador se queda la pantalla negra o con las letras de android, pero de hay no pasa luego de un rato se cancela la aplicacion se ve que compila bien pero no se ejecuta

Responder
Camilo 15/01/2013 - 6:52

Disculpa se me olvido agradecer por tan buenas enseñanzas

Responder
Carola 21/01/2013 - 14:55

Hola Buen dia, me sirvio de mucho el curso recien termine de crear todo. pero cuando ejecuto el emulador no hace mas que mostrarme la fecha y hora y nada mas. que puede ser ?

Gracias por compartir el tutorial.

Responder
mixael 03/02/2013 - 0:14

la verdad siempre que trato de copiar las ordenes me lanza error aparece una x en la escritura

no habla otro proyecto

Responder
Gabriel Murugosa 05/02/2013 - 19:19

Hola quisiera agradecerte por el excelente trabajo que has hecho.

Sin duda es el mejor tutorial de android en Castellano, y lo mejor es que esta actualizado y que es muy fácil de entender.

Los ejemplos me funcionaron perfecto, seguiremos con el curso que realmente esta muy interesante.

Saludos,

Gabriel

Responder
Antuan 20/02/2013 - 18:13

Simplemente daros las gracias.

Responder
hvaldez 23/02/2013 - 15:17

Hermano, me saco el sombrero por la calidad, estructura del contenido, redacción y utilidad de tu curso. Te felicito, Hace rato que no leo las ideas tan bien ordenadas como lo has hecho. Gracias!

Responder
pablo 24/02/2013 - 0:52

Hola,
Tengo un problema, si no he entendido mal la explicacion, al escribir «@+id/TxtNombre» esto hace que se añada automaticamente una constante en la clase R para luedo poder usar la referencia R.id.TxtNombre ¿no?. Es que a mi cuando le he dado a «Run» me ha aparecido un mensaje de advertencia de que habia fallos y todos hacian referencia a que no localizaban las referencias «R.id…….» y he tenido que añadir las constantes manualmente. ¿Donde he fallado?¿Hay que hacer algo para que las autogenere?

Gracias.

Responder
Hugo 12/03/2013 - 17:33

Pablo en el archivo /res/values/strings.xml seguramente habrás borrado la línea en la que pone:
Settings

Responder
fer 12/03/2013 - 18:04

Hola
Al intentar ejecutar la app me indica un error de compilacion
»
Errors occurred during the build.
Errors running builder ‘Android Package Builder’ on project ‘HolaUsr’.
sun/security/x509/X500Name

»
a lo cual tengo una duda, revisando en otros foros dicen que por la jvm, la que yo tengo es la 1.7 de oracle, me puedes ayudar a comprender cual es el error real en esto o que es lo que me falta por configurar y/o instalar
Gracias!!

Responder
Carlos S 14/03/2013 - 20:34

Muchisimas gracias buen tutorial!!!

Responder
Antonio 10/04/2013 - 22:49

Hay un pequeño error en la parte del android-hola-usuario / src / net / sgoliver / android / holausuario/MainActivity.java

en la parte de

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

no es R.menu.activity_main, menu, sino R.layout.activity_main, menu

bueno tutorial!! UN SALUDOS!!

Responder
admin 11/04/2013 - 10:33

Cuidado Antonio, porque la linea indicada en el artículo SÍ es correcta, lo que debes «inflar» es el menú, no el layout de la actividad. Por tanto lo correcto es R.menu.activity_main

Saludos.

Responder
Antonio 10/04/2013 - 23:47

Una pregunta, ¿Porqué no me deja compilar la aplicación en un android 4.2.1?

gracias saludos

Responder
Antonio 11/04/2013 - 10:50

A que te refieres con inflar el menu, pues tengo todo el codigo identico al que poneis aqui y en esa linea me da fallo del tipo «activity_main cannot be resolved or is not a field»

gracias por la rapida respuesta y haber si me puedes ayudar.

pd: Poniendo lo que yo indique me compila en versiones anteriores a la 4.0

Responder
Antonio 11/04/2013 - 11:29

Vale admin ya lo tengo solucionado, el problema que habia que mi r por defecto lo crea como main a secas y en el vuestro como activity_main, e ahí el problema jaja solo tuve que poner main a secas y listo.

Gracias por la ayuda y a seguir con este pedazo de manual!!

Responder
Interfaz de usuario en Android: Widgets (II) | sgoliver.net blog 18/04/2013 - 11:01

[…] Este ID nos llega como parámetro del intent que ha lanzado la actividad. Como ya vimos en un artículo anterior del curso, este intent se puede recuperar mediante el métdo getIntent() y sus parámetros mediante […]

Responder
Fran 29/04/2013 - 11:53

Muy bueno crack!

Responder
sta chevere... 29/04/2013 - 16:01

chevere

Responder
Fabian 02/05/2013 - 1:13

Viejo Oliver!!! desde Colombia que alegría haber hecho la primera APP, estoy entusiasmado con este tema, quiero llegar a poder cosas con el protocolo bluetoth. aqui seguire pegado de tu curso.

Responder
Luis 10/05/2013 - 0:09

Que tal, excelente artículo,

Sin embargo no se si sea mi ambiente o me haya faltado de configurar algo, pero me surgían los siguientes problemas al intentar correr el programa:

1.- Al intentar correrlo con la versión 2.2 marca que el snapshot es incompatible, por lo que sólo «funciona» con la 4.2.
2.- Al correrlo con la 4.2 el emulador se queda en blanco, bueno negro, y no arranca

Lo solucioné al desactivar la opción «Snapshot» de cada instancia del emulador.

Saludos

Responder
Camilo Soto 14/05/2013 - 21:41

Oliver! Gracias por el tuto, lo ejecute en un emulador como tu lo tienes tal cual creado pero se queda en la pantalla negra con las letras de android brillantes, ya lleva 15 min y nada

por favor ayudame

Responder
Luis Alberto 15/05/2013 - 20:09

He estado siguiendo este curso, y todo de maravilla hasta correr la aplicación, me salen estos errores, estoy trabajando sobre windows XP.

Alguien me pudiera decir por que muestra estos errores, Saludos.

Android Launch!
adb is running normally.
Performing com.localhost.holausuario.MainActivity activity launch
Launching a new emulator with Virtual Device ‘GALAXY’

could not load func glBlendEquationSeparate
could not load func glStencilFuncSeparate
could not load func glIsProgram
could not load func glIsShader
could not load func glUniform1f
could not load func glUniform1fv
could not load func glUniform1i
could not load func glUniform1iv
could not load func glUniform2f
could not load func glUniform2fv
could not load func glUniform2i
could not load func glUniform2iv
could not load func glUniform3f
could not load func glUniform3fv
could not load func glUniform3i
could not load func glUniform3iv
could not load func glUniform4f
could not load func glUniform4fv
could not load func glUniform4i
could not load func glUniform4iv
could not load func glUniformMatrix2fv
could not load func glUniformMatrix3fv
could not load func glUniformMatrix4fv
could not load func glAttachShader
could not load func glBindAttribLocation
could not load func glCompileShader
could not load func glCreateProgram
could not load func glCreateShader
could not load func glDeleteProgram
could not load func glDeleteShader
could not load func glDetachShader
could not load func glLinkProgram
could not load func glUseProgram
could not load func glValidateProgram
could not load func glGetActiveAttrib
could not load func glGetActiveUniform
could not load func glGetAttachedShaders
could not load func glGetAttribLocation
could not load func glGetProgramiv
could not load func glGetProgramInfoLog
could not load func glGetShaderiv
could not load func glGetShaderInfoLog
could not load func glGetShaderSource
could not load func glGetUniformfv
could not load func glGetUniformiv
could not load func glGetUniformLocation
could not load func glShaderSource
could not load func glStencilMaskSeparate
could not load func glBlendEquationSeparate
Failed to allocate memory: 8
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application’s support team for more information.

Responder
Daniel 17/05/2013 - 19:01

Excelente tutorial!!, muchas gracias por tu valiosísima contribución.

Responder
Isrot 24/05/2013 - 3:31

Todo bien cuando lo ejecuto en Android 2.2 pero cuando lo ejecuto en el Galaxy Nexus de android 4.2 me manda estos errores…
Emulator] Failed to allocate memory: 8
Emulator]
Emulator] This application has requested the Runtime to terminate it in an unusual way.
Emulator] Please contact the application’s support team for more information.

Creo q tiene que ver con el otro emulador de 2,2 Nexus One que no logro poder cerrarlo…

Gracias por el tutorial :D esta genial aunque un poco complicado para los q no tienen mucho conocimiento de java o eclipse

Responder
giovanny1229 03/06/2013 - 13:32

buenos dias, soy novato en esto de programacion en android, y veo que el tutorial que creaste esta muy bueno por eso lo estoy siguiendo con mucho empeño, pero tengo algunos incovenientes, esta linea me genera error (setContentView(R.layout.activity_main);
se subraya en la R como si no reconociera la ruta , de antemano muchas gracias por compartir tus conocimientos.)

Responder
andres 10/06/2013 - 0:50

buenas tardes.. al intentarlo ejecutarlo cuando creo un nuevo “perfil de ejecución”, noo me toca el proyecto, me aparece un mensaje como el siguiente

There is no android project named ‘HolaUsuario’

Responder
Rafa 06/07/2013 - 6:22

Creo que por claridad, conviene que todas lo que configures que no sean parte de la sintaxis o el vocabulario de programación, lo deberías poner en español, ¿Se puede poner así?

Intent intento = new Intent(MainActivity.this, FrmSaludo.class);

Si sí se puede, entonces quedaría muy claro que intento es algo que «bautizas» tú.

Gracias

Responder
plays 12/07/2013 - 10:56

Hola admin gracias por el material online espero terminarlo todo en linea, soy programador en JavaSE trabajo con aplicaciones que incluyen bases de datos y he aprendido patrones de diseño y un par otras cosas mas enfocado mas a las bases de datos que tanto me gusta para mis clientes y estoy ya hace unas semanas en android pero me parece muy bueno el temario que has puesto, creo que si lo termino la verdad me gustaría darte una donación por tu aporte valioso gracias y saludos desde Honduras.

Responder
plays 12/07/2013 - 10:58

Hola admin gracias por el material online espero terminarlo todo en linea, soy programador en JavaSE trabajo con aplicaciones que incluyen bases de datos y he aprendido patrones de diseño y un par otras cosas mas enfocado mas a las bases de datos que tanto me gusta para mis clientes y estoy ya hace unas semanas en android pero me parece muy bueno el temario que has puesto, creo que si lo termino la verdad me gustaría darte una donación por tu aporte valioso gracias y saludos desde Honduras.

y a los usuarios que siguen esto les recomiendo que se propongan crear en si una aplicación parecida pero no la misma y se llenen de otras fuentes de conocimientos para saber el porque algunas cosas no les funcionan, yo la verdad no hago mucho de lo que el hace porque tengo en mente hacer otras cosas pero esto si va relacionado, así que animo.

Responder
miguel a 12/07/2013 - 23:56

hola gracias por este curso,

tengo una duda al tratar de probar me sale error en la linea android:label=»@string/title_activity_main» > y android:label=»@string/title_activity_saludo» >

con lo siguente
error: Error: No resource found that matches the given name (at ‘label’ with value ‘@string/
title_activity_main’).

y el otro igual pero yo agrege en el archivo string.xml estas lineas no se si estan bien la sintaxis

activity
saludo

Responder
Manuel 15/07/2013 - 18:36

Buenas, enhorabuena por el tutorial pienso que nos va a ser sencillo iniciarnos a android gracias a ti!. Tengo una duda al final, cuando hay que crear los strings en el archivo strings.xml

con que name y value?. Gracias de antemano.

Responder
Manuel 15/07/2013 - 18:39

Perdona no se ha impreso el codigo, me refiero a los strings.xml de title_activity_main y title_activity_saludo. Gracias

Responder
Rodikito 18/07/2013 - 13:14

hola, gracias por todo esto. acabo de terminar esta sección (por segunda vez para asentar bien conocimientos).

recomiendo , como se ha dicho por ahi en otro comentario, ‘jugar’ un poquillo con el ejemplo y añadir más 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 código se te añaden directamente los imports que te falten según lo que hayas escrito

saludos

Responder
SebsLakes 15/08/2013 - 20:10

excelente me está ayudando bastante para iniciarme en esto, eso si hice un par de modificaciones como por ejemplo ocupar el parámetro android:onClick y así llamar directo a un método dentro de mi clase, Muchísimas gracias por el curso

Responder
alex 15/08/2013 - 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’).

Responder
SebsLakes 17/08/2013 - 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

Responder
Daniel 18/08/2013 - 4:28

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

Responder
Daniel 23/08/2013 - 1:32

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

Responder
Carlos Paucar 23/08/2013 - 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»));

}

}

Responder
admin 24/08/2013 - 18:09

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

Responder
Luis 27/08/2013 - 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.

Responder
Jesús Martínez 03/09/2013 - 5:31

A todos los que se quieran iniciar programación en Android, les recomiendo ampliamente hacer un curso basado en JAVA, después de tomar el curso entiendes el lenguaje, como ésta acomodado, que significa cada casa, en fin realmente APRENDES.

Tremendo trabajo estás 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 más que 2 euros GRACIAS ;D

Responder
sgoliver 03/09/2013 - 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.

Responder
Juan! 04/09/2013 - 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

Responder
cesar 17/09/2013 - 7:26

esta muy bueno tu tutorial de los mejores que he encontrado, sin embargo tengo un problema que no he 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

Responder
chankas 19/09/2013 - 22:39

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

Responder
Israel 20/09/2013 - 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

Responder
Miquel 24/09/2013 - 12:17

Buenas,
he seguido el tutorial al pie de la letra, y me da el siguiente error en estas líneas 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! ^^

Responder
klinton 09/10/2013 - 18:26

Dos dudas:

– Una, he copiado el código 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 códigos fuente desde GitHub?

Responder
klinton 09/10/2013 - 19:48

Ya he solucionado lo de NULL

Responder
brenda 13/10/2013 - 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

Responder
Fabián 17/10/2013 - 16:49

Buen aporte, muchas gracias.

Responder
romny 25/10/2013 - 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.

Responder
Gabriel Borja Moscoso 27/10/2013 - 23:22

Hola no se por que no sirve escribir con el teclado, me podrías ayudar.

Responder
Maca 14/11/2013 - 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’
[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 application’s support team for more information.

Responder
jorge andres 23/11/2013 - 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

Responder
Humberto Antonio Marquez 30/11/2013 - 1:35

Buen día.

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:

Responder
LENIN 02/12/2013 - 17:44

Muchas gracias por el buen material.
Saludos

Responder
Èrc Vega Noguera 05/12/2013 - 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.

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.

Responder
oSv@ldO 31/12/2013 - 7:26

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

Responder
Rolitos 03/01/2014 - 22:23

Excelente Curso gracias

Responder
Rolitos 03/01/2014 - 22:28

Hola para los que tengan el problema con la librería R.java lo que deben hacer es corregir el código 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

Responder
Rolitos 03/01/2014 - 22:32

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

Responder
Rolitos 03/01/2014 - 22:32

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

Responder
Edgar 06/01/2014 - 21:07

Buen tutorial, fácil 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 botón y no puedo probar mi aplicación por esto y he seguido todo al pié de la letra, que puede ser?

Responder
gustavo 07/01/2014 - 10:33

hola. cuando le doy click al boton me sale el error «unfortunately, HolaUsuario has stopped.»

porque pasa esto?
gracias.

Responder
gustavo 07/01/2014 - 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?

Responder
paulina morales 23/01/2014 - 3:35

Muchas gracias me ayudo mucho =)

Responder
paulina morales 23/01/2014 - 3:37

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

Responder
Víctor 20/02/2014 - 13:26

Después de hacerlo todo y sin ningún error, al intentar ejecutar la aplicación con el emulador, me sale el siguiente error en la consola y no llega a abrirse nunca el emulador:

[2014-02-20 13:23:09 – Emulator] emulator: WARNING: Requested RAM size of 512MB is too large for your environment, and is reduced to 384MB.
[2014-02-20 13:23:11 – Emulator] Failed to allocate memory: 1455
[2014-02-20 13:23:11 – Emulator]
[2014-02-20 13:23:11 – Emulator] This application has requested the Runtime to terminate it in an unusual way.
[2014-02-20 13:23:11 – Emulator] Please contact the application’s support team for more information.

Alguien sabe a que puede ser debido?

Un saludo y muchas gracias a todos, sobretodo al creador de este excelente curso gratuito!

Responder
Eder 07/03/2014 - 6:00

Hola nesesit alluda para crear una aplicacion para android en eclipse la aplicacion consiste en k al ejecutarla tomo n cantidad de fotos durrante n minutos ejemplo que tome 5 fotos durante 5 minutos se detenga pasen 20 minutos y buelva a tomar 5 fotos durante 5 minutos y se cierre y pòder ver las fotos tomadas en la galeria o que se guarden en la sd del telefono

Responder
Brank 08/03/2014 - 15:55

Hola, intente hacer el tutorial y según yo lo seguí al pie de la letra pero tratando de no copiar codigo lo iba escribiendo yo y me basaba en lo que tenias puesto sin embargo me sale un error de NullPointerException

Responder
Abel 26/03/2014 - 19:17

Hola a todos!

Bien! bien! bieeen!!!
Gracias por el curso. He tenido que rehacer tres veces el código porque me salia el típico error del Main_activity y no era capaz de ver el fallo hasta que leyendo con detenimiento toda la explicación finalmente he podido poner en marcha la app.
Qué satisfacción.
Para los que como yo, los que no tienen ni idea de programación, hay algunos pasos que no están muy claros pero dándole unas vueltas y fijándose muy bien en las explicaciones se puede!! que sí se puede!!

Gracias de nuevo!
Paso al siguiente nivel!
Saludos!!!

Responder
Carlos 06/04/2014 - 23:36

Hola a todos,
felicitaciones por el excelente tutorial, aun es posible hacer el pago para el archivo en PDF ?
Estuve probando los ejercicios y tengo una duda, si requiero pasar los datos del activity 1 al activity 2 todo funciona perfecto con el tutorial, pero si quiero poner otro dato en el activity 2 y regresar ese dato al activity 1 ?
Espero me puedan guiar.

Responder
jose ramos 09/04/2014 - 0:12

que buen material para iniciar conocimientos en android te felicito

tengo una duda a mi me marca un error justo en el MainActivity en la parte de
getMenuInflater().inflate(R.menu.activity_main, menu);

justo en el R.menu a que hace referencia ese: menu

Responder
Damian 29/04/2014 - 0:51

Excelente curso de android te felicito portodo el es fuerzo y dedicacion, sabes he realizado la primera apk del tema uno holausuario , Tengo un inconveniente al ejecutarla en el dispositivo real me manda el siguiente mensaje, holausuario se detuvo:cancela/aceptar y termina no se que pasa; en el código no manda errores!!! Ayudar porfavor gracias.

Responder
teque 08/05/2014 - 7:58

una pregunta me funciono todo pero ¿por que al obtener la referencia de los controles de el mainactivity se usa FINAL y en la localizacion de los controles del frmsaludos no se usa, o no es importante el «FINAL».

Responder
Vanessa 14/05/2014 - 11:31

Hola he realizado todo pero en el archivo activity_main.xml me da error en:

me dice:

error: Error: No resource found that matches the given name (at ‘text’ with value ‘@string/
hola’).

He intentado corregirlo pero no lo consigo.

Responder
Vanessa 14/05/2014 - 11:33

El error me sale en la parte del boton en : android:text=»@string/hola» /> error: Error: No resource found that matches the given name (at ‘text’ with value ‘@string/
hola’).

Responder
Jeremías 14/05/2014 - 16:18

Muchas gracias por tu aporte!! Me estoy iniciando en el desarrollo para android en Java, y este curso me dio los fundamentos que ncesitaba. Sos muy bueno explicando, está todo muy claro, muchas gracias. Saludos desde Argentina!!

Responder
daniel 09/06/2014 - 18:31

Hola,

Por alguna rara razón me da error en:

getMenuInflater().inflate(R.menu.activity_main, menu);

Lo he solucionado cambiando «activity_main» por «main» a secas, por si alguien se encuentra con el mismo problema y le sirve.

Responder
Marcos 20/06/2014 - 15:11

Buenas tardes, resulta que ya me va pasando como 4 veces y no se como solucionarlo:
El codigo no me da ningún error, pero cuando enciendo el emulador me dice que la aplicación ha sido cerrada desafortunadamente. Ayuda por favor!!!!

Gracias.

Responder
farameo 29/06/2014 - 16:47

-marcoss. a mi tambien me paso lo mismo, hay q declarar en el manifest el activity_saludo.

Responder
Ricardo 12/07/2014 - 5:15

Muchas gracias!!!!!!!

Eres de mucha ayuda!

Fantástico!

Responder
Jairo 31/07/2014 - 20:44

Hola a todos
tengo este problema al correr la aplicacion me sale : «unfortunately Hola_Usuario has stopped»
en el logcat me sale el warn thread exiting with uncaught exception y luego el error.

07-31 19:19:58.880: W/dalvikvm(899): threadid=1: thread exiting with uncaught exception (group=0xb4aecd70)
07-31 19:19:58.920: E/AndroidRuntime(899): FATAL EXCEPTION: main
07-31 19:19:58.920: E/AndroidRuntime(899): Process: com.example.hola_usuario, PID: 899
07-31 19:19:58.920: E/AndroidRuntime(899): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.hola_usuario/com.example.hola_usuario.MainActivity}: android.util.AndroidRuntimeException: You cannot combine swipe dismissal and the action bar.

Responder
alejandro 14/08/2014 - 1:16

he desarrollado este programa pero al arrancar el avd, no me muestra error en el codigo, pero detiene el avd, en las lineas de consola me dice: FATAL EXCEPTION. main
…. deseo saber cual es el error, si copie todos los archivos
de antemano muchas gracias.

Responder
Carlos 14/08/2014 - 23:11

Hola, muchas gracias a Oliver por este gran curso… a los usuarios que reportan que tienen error «java.lang.RuntimeException: Unable to start activity ComponentInfo…» se debe a que su layout se encuentra en el archivo fragment_main.xml, y en este tutorial (basado en una version anterior) todo se halla en activiry_main.xml ya que para mostrar el contenido se está usando : setContentView(R.layout.activity_main); pero no es en activity_main donde estan los views.

Saludos.

Responder
Nacho 15/09/2014 - 22:43

Hola!

he hecho la aplicación, en el simulador me funciona, pero en los móviles que lo he probado me da un error:

«Se ha detenido la aplicación.»

Lo he ejecutado en varios móviles y el fallo es el mismo, ¿Sabéis de que puede ser?

Gracias por el tutorial!

Responder
Alfredo 21/09/2014 - 18:53

Hola, me sirvió mucho este tutorial para comprender algunos términos que quedaron ambiguos en mi clase del Instituto, muchas gracias por compartir el curso.

Responder
Eugenio 06/10/2014 - 11:57

Simplemente magistral! Muchísimas gracias por tu paciencia y dedicación, tutorial imprescindible para aprender desde cero con Android studio!

Responder
Juanma 09/10/2014 - 10:33

Muchas gracias por el tutorial.

Muy interesante para iniciarnos en la programación en Android.

Responder
Jose Antonio 30/10/2014 - 10:58

Buenos dias a todos.
Un error muy común y que me volvió loco fue el que no me cruzaba «@string/hola» con el res/values/strings.XML.
Bien, el fallo está en el dichoso copiar / pegar.
El problema es que nos hemos comido una linea importante dentro de la etiqueta :

Settings

Sin esta linea, no detecta la ruta donde ir a buscar el texto @string/

Saludos

Responder
Andres 02/11/2014 - 16:35

Hola.
muy bueno el tutorial termine la codificacion y me salieron algunos errores pero leyendo los comentarios y revisando bien pude ejecutar sin problema. Lo unico que el nombre de la app en el emulador me aparece como ‘False’

Gracias.

Responder
Alejandro 05/11/2014 - 0:10

Me parace de gran ayuda este tutorial que he encontrado,(por azares del destino :p) solo una pequeña recomendacíon,y sin afán de ofender ni nada por el estilo, deberías de cuidar la redaccíon, esto para darle un mayor toque de profesionalismo.

Responder
Pedro 07/01/2015 - 19:58

Muchas gracias, justo lo que buscaba. Explicaciones claras con ejemplos prácticos fáciles de entender.

Responder
Cheli Pineda Ferrer 04/04/2015 - 1:11

Hay un pequeño problema de sintaxis en el layout activity_main.xml, la etiqueta EditText debería tener un cierre al final.

Un saludo.

Responder
Sanchez Gamboa 03/07/2015 - 19:51

Me da el siguiente error en los dos xml
Error:(1) No resource identifier found for attribute ‘id’ in package ‘com.example.mizzat.holausuario’

Que hice mal??

Gracias

Responder
Oscar Fabian 24/02/2016 - 14:39

Buenos días,

Excelente aporte. Gracias por su dedicación.

Responder

Dejar un comentario

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. Aceptar Más Información

Política de Privacidad y Cookies