Pregunta R no puede resolverse: error de Android


Acabo de descargar e instalar el nuevo Android SDK. Quería crear una aplicación simple para probarlo.

El asistente creó este código:

package eu.mauriziopz.gps;

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

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

pero Eclipse me da el error

R no se puede resolver

en línea

setContentView(R.layout.main);

¿Por qué?

PD: tengo un archivo XML llamado main.xml debajo res/layout/.


987


origen


Respuestas:


Después de rastrear este problema también, encontré esta nota en la documentación de Android:

http://source.android.com/source/using-eclipse.html

* Nota: A veces, a Eclipse le gusta agregar una declaración "importar android.R" al   la parte superior de tus archivos que usa recursos,   especialmente cuando le pides a Eclipse que   ordenar o administrar las importaciones de otro modo Esta   causará su hacer romper. Mira   a cabo para estas importaciones erróneas   declaraciones y elimínelas. *

Mientras repasaba los tutoriales de ejemplo de Android, solía usar el Ctrl + Cambio + O comando para "Organizar Importaciones" y generar cualquier declaración de importación faltante. A veces, esto generaría una declaración de importación incorrecta que ocultaría el R.java clase que se genera automáticamente cuando construyes.


817



Cada vez que tenía un problema con R no se generaba, o incluso desaparecía, esto se debía a algún problema en el archivo de diseño XML que impedía la creación de la aplicación.


377



Cada vez que obtienes

R no se puede resolver

luego verifica el /res directorio y debe haber algún archivo que tenga algún error y que impida la creación de la aplicación. Por ejemplo, puede ser un archivo de diseño o puede deberse a que falta algún recurso, pero ya lo definió en el archivo XML.

Si tiene imágenes adicionales, incluso sin usar (!) O sin referencia (!) En una carpeta como res / drawables-mdpi que no cumple con las convenciones de nomenclatura de archivos (puede contener solo [a-z0-9_.]), Es posible que la clase R.java no se genere, lo que provoca la cadena de eventos a la que se refieren todas las demás publicaciones. ¡Espero eso ayude!


192



mi proyecto incluye un r.java.at al principio, R.layout.main funciona bien.Pero después de agregar un código no funciona, y el error es R.layout.main no se puede resolver.¿Cuál es el problema? ?

Mira tus importaciones. Lo más probable es que la línea:

import android.R;

estaré ahí. Si ese es el caso, elimínelo, para que su proyecto resuelva R no con la clase predeterminada de Recursos de Android, sino con la generada automáticamente desde su carpeta / res /.


128



Y otra cosa que puede causar este problema:

Instalé el nuevo ADT (v. 22). Dejó de crear gen carpeta que incluye R.java. La solución fue instalar también nuevas herramientas de compilación SDK de Android desde el Administrador de SDK de Android.

Solución encontrada aquí


94



R.java es un archivo que los complementos de Android Eclipse crean mientras construyendo su aplicación. R.java se crea bajo el "gen" directorio. Este archivo se genera a partir de la información en el "res" directorio. Si ejecuta seleccione "Proyecto" -> "Limpiar ..." en el Eclipse menú, eliminará y luego regenerará el R.javaarchivo.

El problema "R no se puede resolver" sucede cuando cambia su nombre del paquete en AndroidManifest.xml archivo. Utiliza tu Android nombre del paquete para crear un subdirectorio en el directorio "gen" donde almacena el R.javaarchivo.

Eclipse puede tener problemas para ejecutar limpio, porque está confundido acerca de donde el R.java archivo es cuando ha cambiado el paquete de Android nombre. Puede cambiar el nombre del subdirectorio en gen para que coincida con su nuevo nombre del paquete, o puede cambiar el nombre de su paquete a la antigua nombre. Haga la limpieza y luego cambie el nombre del paquete por el nuevo nombre usted quiere. Esto funciona mejor si evita que Eclipse intente construir mientras está cambiando el nombre del paquete. En el menú "Proyecto" desactive la opción "Crear automáticamente" y también cuando el El cuadro de diálogo "Limpiar ..." pregunta si debería "Comenzar una compilación inmediatamente" desmarque la casilla para que no intente generar mientras está cambiando el Nombre del paquete. Después de haber cambiado el nombre, puede activar "Crear Automáticamente "de nuevo encendido".

Tenga en cuenta que si su AndroidManifest.xml el nombre del paquete de archivos no coincide su nombre de paquete de Java, Eclipse terminará agregando automáticamente un "importar <su nombre de paquete Android> .R;" línea en todos sus .java archivos que tenga alguna referencia a R. Si cambia su AndroidManifest.xml nombre del paquete, a veces Eclipse no actualiza todos estos agregados importaciones. Si eso sucede, use la refactorización de Eclipse (ALT + Cambio + R) para cambiar la declaración de importación en uno de sus archivos Java a tu nuevo AndroidManifest.xml Nombre del paquete. Lo mejor es hacer esto mientras ha desactivado "Crear automáticamente".


85



Lo que Will dijo fue correcto

R es una clase generada automáticamente que contiene las constantes utilizadas para identificar tus> recursos. Si no tiene un archivo R.java (sería gen / eu.mauriziopz.gps / R.java en> Eclipse con el SDK 1.5) le recomendaría cerrar y volver a abrir su proyecto o ir a> Proyecto> Crear todo (y seleccionando "Build Automatically" mientras está allí, tal como lo recomienda Josef). Si eso no funciona, intente hacer un nuevo proyecto, si el problema se recrea, entonces> publique aquí nuevamente y entraremos en más detalles.

pero descubrí que había otro problema que estaba causando el primero. Las herramientas en el directorio SDK no tenían los permisos para ser ejecutados, por lo que era como si no existiera para Eclipse, por lo tanto no construyó el R.javaarchivo.

Así que modificar el permiso y seleccionar "Crear automáticamente" resolvió el problema.


82



R es una clase generada automáticamente que contiene las constantes utilizadas para identificar sus recursos. Si no tiene un archivo R.java (sería gen / eu.mauriziopz.gps / R.java en Eclipse con el SDK 1.5), le recomendaría cerrar y volver a abrir su proyecto o ir a Proyecto> Crear todo (y seleccionando "Build Automatically" (Crear automáticamente) mientras está allí, según lo recomendado por Josef). Si eso no funciona, intente hacer un nuevo proyecto, si el problema se recrea, vuelva a publicar aquí y entraremos en más detalles.


36



Cierre todos los archivos, limpie el proyecto, reinicie Eclipse.


28



Vale la pena registrarse AndroidManifest.xml. El atributo package tiene el valor correcto

Es decir:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="your.correct.package.name"
   ...

Después de cambiar eso, el R.java será re-generado


22



Este error también puede deberse a que agrega una actividad a un espacio de nombres que es diferente al espacio de nombres raíz para su paquete.

Por ejemplo, si com.example.myapp es el espacio de nombres raíz para su paquete, puede agregar una actividad al com.example.myapp.activities espacio de nombres

Esto producirá el error "R no se puede resolver".

Para corregir la importación, la R en el espacio de nombre predeterminado en su actividad debe ser:

import com.example.myapp.R;

19