Question R ne peut pas être résolu - Erreur Android


Je viens de télécharger et d'installer le nouveau SDK Android. Je voulais créer une application simple pour tester le lecteur.

L'assistant a créé ce code:

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

mais Éclipse me donne l'erreur

R ne peut pas être résolu

en ligne

setContentView(R.layout.main);

Pourquoi?

PS: J'ai un fichier XML nommé main.xml en dessous de res/layout/.


987


origine


Réponses:


Après avoir suivi ce problème, j'ai trouvé cette note dans la documentation Android:

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

* Remarque: Eclipse aime parfois ajouter une déclaration "import android.R" au   haut de vos fichiers qui utilisent des ressources,   surtout quand vous demandez à Eclipse de   trier ou gérer les importations. Ce   causera votre faire casser. Regardez   out pour ces importations erronées   déclarations et les supprimer. *

Tout en passant par les exemples de tutoriels Android, j'utiliserais souvent le Ctrl + Décalage + O commande "Organiser les importations" et générer toutes les instructions d'importation manquantes. Parfois, cela générerait la déclaration d'importation incorrecte qui cacherait la R.java classe qui est générée automatiquement lorsque vous construisez.


817



Chaque fois qu'un problème avec R n'était pas généré, ou même disparaissait, cela était dû à un problème dans le fichier de disposition XML qui empêchait la construction de l'application.


377



Chaque fois que vous obtenez

R ne peut pas être résolu

puis vérifiez la /res répertoire et il doit y avoir un fichier qui a une erreur et qui empêche la construction de l'application. Par exemple, il peut s'agir d'un fichier de mise en page ou d'une ressource manquante, mais vous l'avez déjà défini dans le fichier XML.

Si vous avez des images supplémentaires, même inutilisées (!) Ou non référencées (!) Dans un dossier comme res / drawables-mdpi qui ne sont pas conformes aux conventions de nommage des fichiers (peut contenir seulement [a-z0-9_.]), Le La classe R.java peut ne pas générer, provoquant la chaîne d'événements tous les autres postes auxquels il est fait référence. J'espère que cela aide!


192



mon projet a inclure un r.java.at au début, R.layout.main fonctionne bien.Mais, après avoir ajouté du code, ça ne marche pas, et l'erreur est R.layout.main ne peut pas être résolu. quel est le problème ?

Regardez vos importations. Les chances sont que la ligne:

import android.R;

sera là. Si c'est le cas, supprimez-le, afin que votre projet ne résolve pas R avec la classe Android Resources par défaut, mais avec celle générée automatiquement à partir de votre dossier / res /.


128



Et une autre chose qui peut causer ce problème:

J'ai installé le nouvel ADT (v. 22). Il a cessé de créer gen dossier qui comprend R.java. La solution consistait également à installer de nouveaux outils de création de SDK Android à partir du gestionnaire de SDK Android.

Solution trouvée ici


94



R.java est un fichier créé par les plug-ins Android Eclipse construire votre application. R.java est créé sous le "gen" annuaire. Ce fichier est généré à partir des informations contenues dans le "res" annuaire. Si vous exécutez, sélectionnez "Projet" -> "Nettoyer ..." sur l'Eclipse menu, il va supprimer, puis régénérer le R.javafichier.

Le problème "R ne peut être résolu" se produit lorsque vous changez votre nom du paquet dans le AndroidManifest.xml fichier. Il utilise votre Android nom du package pour créer un sous-répertoire dans le répertoire "gen" où il stocke le R.javafichier.

Eclipse peut avoir des problèmes d'exécution propre, car il est confus à propos de où le R.java fichier est lorsque vous avez changé le paquet Android prénom. Vous pouvez soit renommer le sous-répertoire sous gen pour correspondre à votre nouveau nom de paquet, ou vous pouvez changer le nom de votre paquet prénom. Faites le nettoyage, puis remplacez le nom du package par le nouveau nom tu veux. Cela fonctionne mieux si vous arrêtez Eclipse d'essayer de construire pendant que vous changez le nom du paquet. Sous le menu "Projet" décochez l'option "Construire automatiquement" et aussi lorsque "Clean ..." boîte de dialogue demande si elle devrait "Démarrer une build immédiatement" décochez la case afin qu'il ne tente pas de construire pendant que vous changez le nom du paquet. Après avoir changé le nom, vous pouvez activer "Construire Automatiquement "de nouveau sur.

Notez que si votre AndroidManifest.xml le nom du package de fichier ne correspond pas votre nom de package Java, Eclipse finira automatiquement ajouter un "import <votre nom de package Android> .R;" ligne dans tous vos .java des dossiers qui ont des références à R. Si vous changez votre AndroidManifest.xml nom du paquet, parfois Eclipse ne met pas à jour tous ces importations. Si cela se produit, utilisez le refactoring Eclipse (ALT + Décalage + R) pour modifier l'instruction d'importation dans l'un de vos fichiers Java votre nouveau AndroidManifest.xml nom du paquet. Il est préférable de le faire alors que vous avez désactivé "Construire automatiquement".


85



Qu'est-ce que Will a dit était juste

R est une classe générée automatiquement qui contient les constantes utilisées pour identifier vos ressources. Si vous n'avez pas de fichier R.java (ce serait gen / eu.mauriziopz.gps / R.java dans> Eclipse avec le SDK 1.5), je vous recommande de fermer et rouvrir votre projet ou d'aller sur> Project> Build all (et en sélectionnant "Construire automatiquement" alors qu'il est recommandé par> Josef). Si cela ne fonctionne pas, essayez de faire un nouveau projet, si le problème est recréé que> poster ici encore et nous allons entrer dans plus de détails.

mais j'ai découvert qu'il y avait un autre problème qui causait le premier. Les outils du répertoire SDK n'ont pas les permissions pour être exécutés, donc c'était comme si n'existait pas pour Eclipse, donc il n'a pas construit le R.javafichier.

Donc modifier la permission et sélectionner "Construire automatiquement" a résolu le problème.


82



R est une classe générée automatiquement qui contient les constantes utilisées pour identifier vos ressources. Si vous n'avez pas de fichier R.java (ce serait gen / eu.mauriziopz.gps / R.java dans Eclipse avec le SDK 1.5), je vous recommande de fermer et de rouvrir votre projet ou d'aller sur Projet> Construire tout (et en sélectionnant "Construire automatiquement" alors que recommandé par Josef). Si cela ne marche pas, essayez de faire un nouveau projet, si le problème est recréé, postez-le à nouveau et nous reviendrons plus en détail.


36



Fermez tous les fichiers, nettoyez le projet, redémarrez Eclipse.


28



Il vaut la peine de vérifier dans AndroidManifest.xml. L'attribut package a la valeur correcte.

C'est:

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

Après avoir changé cela, le R.java sera re-généré.


22