Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 15/11/10, 21:02:45
Avatar de neovin
neovin neovin no está en línea
Miembro del foro
Mensajes: 94
 
Fecha de registro: feb 2009
Mensajes: 94
Modelo de smartphone: Nexus 4 + Galaxy Tab 7 + Galaxy Tab 10.1
Versión de ROM: 4.2.2 Oficial
Tu operador: Jazztel
Mencionado: 0 comentarios
Tagged: 0 hilos
Decepcionado y profundamente desilusionado

Bueno, pues al fin me decidí a programar en android y no podía haber entrado de peor forma.
He seguido varios tutoriales, he instalado el entorno en win7 64bits, ubuntu 64, win xp 32, he probado varias configuraciones y ejemplos y no hay manera. No paso del hola mundo. Algo pasa o algo hago mal. Necesito una ayuda por favor.

Para empezar partamos que instalo el entorno y los componentes bien, le indico el lugar del sdk descargado, creo un avd, etc.
- Eclipse arranca bien pero al generar un nuevo proyecto android me suelta el famoso "ERROR: Unable to open class file C:\Androidsdk\Proyectos\HolaUsuario\gen\HolaUsuari o\neoviri\R.java: No such file or directory" pero voy al gen del proyecto y allí tengo mi R.java. Mosquea pero allí está. De hecho arranca el hello world sin problemas.
- El problema viene en algo tan sencillo como crear un layout, lo creo y todo correcto. El problema está en que la clase R a veces le da por por crearlo y otras veces pasa del tema y claro, ya empieza el lio. A ver que hago.
- Seguimos, cuando a la clase R le da por portarse bien y me actualiza el layout pues nada, vamos a crear una nueva activity llamada FrmMensaje. Me voy para el src, creo una clase extendida a activity y le doy a finish. Hasta ahí todo bien. Ahora, para intentar explicar lo que ocurre lo pongo de la manera mas sencilla posible. Pego lo siguiente:
Código:
public class FrmMensaje extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.frmmensaje);
    }
}
Ya tenemos el lio, eclipse me dice "Bundle cannot be resolved to a type". ¿por qué aquí me da error y en la activity principal que tambien tengo el Bundle no?
Si acepto la sugerencia de eclipse de "import Bundle (android os)" me desaparece el error.
El mismo error me ocurre si en la activity principal intento poner algo así
Código:
final EditText txtNombre = (EditText)findViewById(R.id.TxtNombre);
me dice que "EditText cannot be resolved to a type". Si los importo desaparecen, ¿pero por qué no lo reconoce? ¿por qué tengo que ir importando?. A veces al importar hasta me desparece la clase R sin ton ni son. Es como si no enlazase bien con los metodos del sdk, como si no entendiese.
Es desesperante. Soy novato pero no se si debo sufrir tanto. Agradecería cualquier ayuda, quiero aprender pero me he encontrado con esto que no me deja avanzar.

Gracias de antemano.
Saludos.
Responder Con Cita


  #2  
Viejo 16/11/10, 08:03:56
Avatar de javielinux
javielinux javielinux no está en línea
Usuario novato en la web
Mensajes: 13
 
Fecha de registro: nov 2010
Localización: Cádiz, España
Mensajes: 13
Modelo de smartphone: Nexus One
Tu operador: Vodafone
Mencionado: 2 comentarios
Tagged: 0 hilos
No te desesperes... vamos a ver si lo solucionamos

¿En tu proyecto debajo del directorio "gen" tienes un directorio llamado "Google APIs" con un archivo dentro llamado "android.jar"?

Si no es así pulsar botón derecho encima del proyecto y dale a "Propiedades". Ahora dale a "Android" y luego seleccionar la versión con la que quieres compilar tu programa

Lo del archivo R.java es raro. Paree que el problema es el que te digo antes y puede ser que luego te de conflictos con la clase R

¿Generas un proyecto de tipo "Android Project"? Si es así todo debería funcionarte

Es raro lo que te está pasando... ya cuentas... verás como se soluciona

Saludos
Responder Con Cita
  #3  
Viejo 16/11/10, 14:03:41
Avatar de neovin
neovin neovin no está en línea
Miembro del foro
Mensajes: 94
 
Fecha de registro: feb 2009
Mensajes: 94
Modelo de smartphone: Nexus 4 + Galaxy Tab 7 + Galaxy Tab 10.1
Versión de ROM: 4.2.2 Oficial
Tu operador: Jazztel
Mencionado: 0 comentarios
Tagged: 0 hilos
Gracias Javielinux por responder.
Voy a intentar aclararlo con imagenes.
Creo el proyecto Android.

Relleno los parametros

El famoso error de la clase R.

Aunque como se puede ver al final me la crea

Al modificar algo del layout principal ya empiezan a aparecer algunos problemas que podrían solucionarse en strings.

Cuando preparaba las imagentes me ha ocurrido lo que comentaba, creo un layout y la clase R no se ha actualizado.

He vuelto a generar un nuevo proyecto y esta vez si me lo genera.

Creo la nueva clase

con la activity extendida

quedando así

En principio sin errores

Ahora si pego el siguiente codigo tengo el error en bundle

que si lo importo,

me quita el error, pero claro lo he tenido que importar

y lo mismo pasa con otros metodos o controles que si los importo se soluciona, pero que pasa con el id deberia generarlo en la clase R automaticamente y no de forma manual como me sugiere.

En fin, cuando no es un pito es una flauta, la cuestion es que no puedo avanzar porque ni los tutoriales tan sencillos como el de las imagenes (por cierto sacado de http://www.sgoliver.net/blog/?p=1316 ) puedo desarrollarlos. Y mira que tengo ganas.
Y lo más gracioso, es que en w7 64 y ubuntu 64 pasa lo mismo.
A ver si me podeis echar una mano.
Gracias. Saludos.

Última edición por neovin Día 16/11/10 a las 14:07:45
Responder Con Cita
Gracias de parte de:
  #4  
Viejo 16/11/10, 16:25:39
Avatar de javielinux
javielinux javielinux no está en línea
Usuario novato en la web
Mensajes: 13
 
Fecha de registro: nov 2010
Localización: Cádiz, España
Mensajes: 13
Modelo de smartphone: Nexus One
Tu operador: Vodafone
Mencionado: 2 comentarios
Tagged: 0 hilos
Creo que tu problema se soluciona pulsando CRTL + MAY + O

Los import los tienes que poner SIEMPRE y pulsando estas 3 magníficas teclas el sólo te pondrá todos los imports que necesites

En la última captura te debería de poner el import de EditText y de Button

Respecto al R prueba si con esto ya te funciona. Los IDs te los debería de crear en el momento que guardas el archivo XML, eso lo debe hacer sólo

El nombre del paquete no creo que sea el problema, pero deberías de ponerlo con la nomenclatura adecuada

Llámalo mejor "com.neoviri.holausuario"

Mira si después de estos cambios te sigue pasando

Lo de que la R no se actualice ni en Ubuntu ni en Windows no me cuadra. Algo hay que estar haciendo mal

Saludos
Responder Con Cita
  #5  
Viejo 16/11/10, 19:57:38
Avatar de neovin
neovin neovin no está en línea
Miembro del foro
Mensajes: 94
 
Fecha de registro: feb 2009
Mensajes: 94
Modelo de smartphone: Nexus 4 + Galaxy Tab 7 + Galaxy Tab 10.1
Versión de ROM: 4.2.2 Oficial
Tu operador: Jazztel
Mencionado: 0 comentarios
Tagged: 0 hilos
Gracias nuevamente javielinux.
Bueno, parece que se va viendo algo de luz.
Para terminar el proyecto solo me queda por resolver los siguientes problemas que no se por qué ocurren.




Una vez visto esto, te comento algunas observaciones:

- Si cambio el codigo del main layout sin haber generado en strings las correspondientes variables a las que menciono, evidentemente sale el error, pero es más si entonces creo el otro layout frmmensaje.xlm es entonces cuando la clase R no se actualiza y no crea el frmmensaje. Sin embargo, si creo primero el frmmensaje.xlm antes de cambiar el codigo al main, entonces si que me lo crea en la clase R.
- Respecto a los imports, ¡¡¡gracias!!!. Efectivamente, el CRTL + MAY + O lo soluciona.
- El fallo del id se soluciono al crear las variables en el string que a su vez soluciono el main. O por uno o por otro lo soluciono.
- Faltaría pues saber por qué pasa lo de las imagenes que te adjunto.
- Por último, creo que para no tener problemas lo mejor es ir de principio a fin, si se van a usar variables en un layout, creo primero las variables y luego hago el layout. Si en una clase voy a usar un layout con unos componentes determinados, creo primero el layout con tales componentes primero y despues creo la clase. Al final creo que el copy paste de los tutos sin tener un procedimiento válido es lo que me desconcertaba. Independientemente de todo, ¿crees normal que los errores bloqueen por completo la clase R?

Bueno, a ver si solucionamos el setOnClickListener y el onClick y lo bordamos.
Muchas gracias por la ayuda y los ánimos.
Saludos.
Responder Con Cita
  #6  
Viejo 17/11/10, 11:33:59
Avatar de javielinux
javielinux javielinux no está en línea
Usuario novato en la web
Mensajes: 13
 
Fecha de registro: nov 2010
Localización: Cádiz, España
Mensajes: 13
Modelo de smartphone: Nexus One
Tu operador: Vodafone
Mencionado: 2 comentarios
Tagged: 0 hilos
Sólo se me ocurre que el "OnClickListener" que hayas importado no sea el de la clase apropiada

Mira si tu import del OnClickListener es el siguiente

Código:
import android.view.View.OnClickListener;
Es posible que lo hayas importante de otra clase

Cuando le das a CTRL + MAY + O, si hay dos clases iguales tienes que elegir la apropiada y creo que has elegido la que no es

Si es así importa la que te he puesto o modifica la línea

Ya me cuentas

Saludos
Responder Con Cita
  #7  
Viejo 17/11/10, 13:43:43
Avatar de neovin
neovin neovin no está en línea
Miembro del foro
Mensajes: 94
 
Fecha de registro: feb 2009
Mensajes: 94
Modelo de smartphone: Nexus 4 + Galaxy Tab 7 + Galaxy Tab 10.1
Versión de ROM: 4.2.2 Oficial
Tu operador: Jazztel
Mencionado: 0 comentarios
Tagged: 0 hilos
Efectivamente, era lo que apuntabas.

Ya está resuelto. Hasta funciona y todo

De todas formas me gustaría saber que opinas respecto a esto que me tiene mosqueao:

- Si cambio el codigo del main layout sin haber generado en strings las correspondientes variables a las que menciono, evidentemente sale el error, pero es más si entonces creo el otro layout frmmensaje.xlm es entonces cuando la clase R no se actualiza y no crea el frmmensaje. Sin embargo, si creo primero el frmmensaje.xlm antes de cambiar el codigo al main, entonces si que me lo crea en la clase R. ¿crees que es esto normal?
- Por último, creo que para no tener problemas lo mejor es ir de principio a fin, si se van a usar variables en un layout, creo primero las variables y luego hago el layout. Si en una clase voy a usar un layout con unos componentes determinados, creo primero el layout con tales componentes primero y despues creo la clase. Al final creo que el copy paste de los tutos sin tener un procedimiento válido es lo que me desconcertaba. Independientemente de todo, ¿crees normal que los errores bloqueen por completo la clase R?

Te digo algo más en privado.
Muchas gracias por todo, al menos he terminado el tuto y he recuperado la ilusión.
Saludos.
Responder Con Cita
  #8  
Viejo 18/11/10, 07:59:40
Avatar de javielinux
javielinux javielinux no está en línea
Usuario novato en la web
Mensajes: 13
 
Fecha de registro: nov 2010
Localización: Cádiz, España
Mensajes: 13
Modelo de smartphone: Nexus One
Tu operador: Vodafone
Mencionado: 2 comentarios
Tagged: 0 hilos
Me alegro que hayas recuperado la ilusión, eso era importante

Lo de la actualización de la clase R a mi no me pasa, ni en Ubuntu ni en Windows

No se que puede estar pasando :-(
Responder Con Cita
  #9  
Viejo 19/11/10, 19:35:58
Avatar de neovin
neovin neovin no está en línea
Miembro del foro
Mensajes: 94
 
Fecha de registro: feb 2009
Mensajes: 94
Modelo de smartphone: Nexus 4 + Galaxy Tab 7 + Galaxy Tab 10.1
Versión de ROM: 4.2.2 Oficial
Tu operador: Jazztel
Mencionado: 0 comentarios
Tagged: 0 hilos
Bueno, al menos hemos recuperado la mayor
Estoy haciendo un truco que para lo poco que he hecho me funciona. Lo pongo aquí para que quede mas o menos solucionado el post.
Siempre tenemos un AndroidManifest.xml en cualquier proyecto y en el su codigo se hace mencion al paquete que contiene la clase R mediante
Código:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.neoviri.holausuario"
      android:versionCode="1"
      android:versionName="1.0">
Bien, si cambio el nombre al paquete en el codigo, el proyecto, tras preguntarme si quiero cargarme el anterior, me recompila una clase R nueva en otro paquete con el nombre que hemos indicado. Para evitar posibles problemas que desconozca, tras este pequeño truco, vuelvo al nombre original, recompilando nuevamente la clase R y recogiendo cualquier problema de referencias que tuviese.
Rudimentario pero hasta el momento efectivo.

Te he dejado un nuevo privado. Gracias.
Saludos.
Responder Con Cita
  #10  
Viejo 20/11/10, 11:00:30
Avatar de pmaicas
pmaicas pmaicas no está en línea
Desarrollador
Mensajes: 1,299
 
Fecha de registro: dic 2008
Mensajes: 1,299
Mencionado: 25 comentarios
Tagged: 0 hilos
Si de lo que se trata es de recompilar completamente, puedes usar el menú Project - Clean, y si tiene seleccionado Build Automatically se recompilará todo de nuevo, y en caso conmtrario lo haces con Project - Build
Responder Con Cita
Gracias de parte de:
  #11  
Viejo 23/11/10, 19:21:34
Avatar de neovin
neovin neovin no está en línea
Miembro del foro
Mensajes: 94
 
Fecha de registro: feb 2009
Mensajes: 94
Modelo de smartphone: Nexus 4 + Galaxy Tab 7 + Galaxy Tab 10.1
Versión de ROM: 4.2.2 Oficial
Tu operador: Jazztel
Mencionado: 0 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por pmaicas Ver Mensaje
Si de lo que se trata es de recompilar completamente, puedes usar el menú Project - Clean, y si tiene seleccionado Build Automatically se recompilará todo de nuevo, y en caso conmtrario lo haces con Project - Build
Gracias pmaicas por tu apunte. Veo que es bastante más serio que mi chapuza.
Disculpa por no responder antes.

Saludos.
Responder Con Cita
  #12  
Viejo 19/01/12, 14:02:58
Avatar de hofstatder
hofstatder hofstatder no está en línea
Usuario novato en la web
Mensajes: 1
 
Fecha de registro: ene 2012
Mensajes: 1
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Buenas, a mi me estaba pasando algo como a ti.

Estoy siguiendo el tutorial de sgoliver, pero me he atascado porque me pasaba lo mismo con la clase R. Si importaba su proyecto, no tenía problema alguno, pero si empezaba yo desde 0 me pasaba lo mismo que a ti.

He visto este post, y he intentado hacer lo mismo que tu, pero lo que me pasa a mi a hora es que el emulador no quiere cargar la aplicación!!!

en la consola de eclipse se me queda en wait home... y por mucho que espere nada. Antes si lo hacía pero ahora ni eso, y me está pasando como te pasaba a ti, me estoy desesperando con esta historia ya...
Responder Con Cita
  #13  
Viejo 19/01/12, 21:30:41
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Tu problema es simple y llanamente que no sabes Java, porque si no sabes porque tienes que ir importando tienes un problema de base.

Es lo mismo que si un programador de C dice "¿Por qué tengo que poner #include <stdio.h>?.

Esto no es culpa de Android ni de Google, en todo caso será culpa de los diseñadores de Java (aunque uno de ellos es el CEO actual de Google), pero tampoco es así. Hay que tener conceptos básicos sobre Java antes de meterse de lleno con Android.
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 09:08:37 (GMT +2)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007