|
||
|
![]() |
![]() |
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
|
||||
|
||||
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); } } 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); 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. |
|
#2
|
||||
|
||||
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 |
#3
|
||||
|
||||
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. |
Gracias de parte de: | ||
#4
|
||||
|
||||
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 |
#5
|
||||
|
||||
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. |
#6
|
||||
|
||||
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; 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 |
#7
|
||||
|
||||
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. |
#8
|
||||
|
||||
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 :-( |
#9
|
||||
|
||||
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"> Rudimentario pero hasta el momento efectivo. Te he dejado un nuevo privado. Gracias. Saludos. |
#10
|
||||
|
||||
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
__________________
Saludos
![]() -Pedro- http://www.maicas.net/ (desarrollo de software) http://droid.maicas.net/ (solo android) |
Gracias de parte de: | ||
#11
|
||||
|
||||
![]() Disculpa por no responder antes. Saludos. |
#12
|
||||
|
||||
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... |
#13
|
||||
|
||||
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. |
![]() |
![]() |
||||||
|