developers - android studio lint




R ne peut pas être résolu-Erreur Android (20)

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 Eclipse 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 sous res/layout/ .


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 /.


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 instruction "import android.R" au début de vos fichiers qui utilisent des ressources, en particulier lorsque vous demandez à Eclipse de trier ou de gérer les importations. Cela provoquera votre rupture. Recherchez ces instructions d'importation erronées et supprimez-les. *

Tout en parcourant les exemples de didacticiels Android, j'utilise souvent la commande Ctrl + Maj + O pour «Organiser les importations» et générer toutes les instructions d'importation manquantes. Cela génère parfois l'instruction d'importation incorrecte qui masque la classe R.java générée automatiquement lors de la génération.


Avec les bonnes suggestions dans les réponses précédentes, assurez-vous que votre cible Android est définie:

  1. Faites un clic droit sur votre projet
  2. Choisissez les propriétés
  3. Choisissez Android dans le menu de gauche
  4. Cochez une case à côté de la cible de construction de projet appropriée.
  5. Cliquez sur Appliquer et OK

Edit: Un an plus tard, j'ai trouvé une autre cause. J'avais une image .jpg dans mon dossier drawable avec le même nom qu'une image .png. Référencer cette image dans mon code doit avoir confondu le programme et il a donné l'erreur "R ne peut pas être résolu".


Cela vaut la peine de vérifier dans AndroidManifest.xml . Le package attributs 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é.


Cette erreur peut également être provoquée en ajoutant une activité à un espace de noms différent de l'espace de noms racine de votre package.

Par exemple, si com.example.myapp est l'espace de noms racine de votre package, vous pouvez ajouter une activité à l'espace de noms com.example.myapp.activities .

Cela produira l'erreur "R ne peut pas être résolu".

Pour corriger l'importation, le R dans l'espace de noms par défaut de votre activité doit être:

import com.example.myapp.R;

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.


Dans mon cas, j'ai eu une erreur dans mon AndroidManifest.xml . D'autres ont dit que vos fichiers XML doivent être exempts d'erreurs, mais je cherchais seulement dans le dossier res /. Trouvez et corrigez autant d'erreurs possibles et le problème pourrait bien se résoudre.


Essayez de mettre votre nouveau nom de fichier de mise en page XML en minuscules. Par exemple, utilisez my_file.xml au lieu de myFile.xml .


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


Il suffit d'aller à la liste du menu Android haut. cliquez sur Build Menu, sous Build, cliquez sur Rebuild Project .


J'ai eu les exemples d'Android 8 et essayait d'utiliser Android 7 SDK. Lorsque j'ai fermé le projet et rouvert le dossier de l'application et choisi d'utiliser Android 8 SDK, il était capable de trouver le fichier R. J'espère que cela t'aides.


J'ai juste eu ce problème pour la millionième fois et j'ai réalisé ce qui le causait: j'ai créé un fichier XML avec des majuscules dans le nom. Tous vos noms de fichiers XML dans /res doivent correspondre à [a-z0-9\\._] .


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 dans le répertoire SDK n'avaient pas les permissions pour être exécutés, donc c'était comme si n'existait pas pour Eclipse, ainsi il n'a pas construit le fichier R.java .

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


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 dans 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.


Souvent, cela est dû au numéro de version MinSDK que vous avez fourni lors de la création du projet. Exemple:

Si vous voulez que le 2.1 soit le minimum, Android 2.1 est en fait le niveau 7 de l'API.

Vous pouvez voir de quoi je parle lorsque vous parcourez le SDK que vous avez téléchargé et installé. Accédez à l'endroit où vous avez installé le SDK ( C:\android-sdk-windows par exemple) et ouvrez le dossier nommé "plates-formes". Vous verrez quelque chose comme "android-7" listé comme un dossier, et si vous ouvrez il y a un fichier source.properties qui, lorsqu'il est ouvert avec un éditeur de texte, vous montrera la version de la plate-forme correspondante.

Lorsque vous créez un projet et que vous devez sélectionner une API "Générer la cible", la dernière colonne de cette liste nommée "Niveau de l'API" indique le nombre que vous recherchez lors du remplissage du paramètre MinSDK.

C'est probablement l'une des erreurs les plus courantes qui entraîne la R.java fichier R.java sous Project> gen> packagename> R.java.


Supprimez le main.out.xml . Je suis nouveau à cela et je ne sais pas encore à quoi sert ce fichier, mais en le supprimant, j'ai résolu le problème.


Vérifiez les noms de fichiers XML. Assurez-vous qu'ils sont tous en minuscules.

Assurez-vous également que tous les noms de ressources d'images sont également tous dans LOWER CASE. J'avais une lettre majuscule au nom de mon fichier jpg, et cela a provoqué l'erreur R non résolue directement dans mon projet.


Vous devrez peut-être mettre à jour / installer les outils SDK. Relancez le Gestionnaire de SDK Android et installez un nouvel élément: Android SDK Build-tools.one par un delete, fixez lequel fonctionne pour vous.


R.java est un fichier créé par les plugins Android Eclipse lors de la construction de votre application. R.java est créé dans le répertoire "gen". Ce fichier est généré à partir des informations du répertoire "res". Si vous exécutez sélectionnez "Projet" -> "Nettoyer ..." dans le menu Eclipse, il va supprimer, puis régénérer le fichier R.java .

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

Eclipse peut avoir des problèmes d'exécution, car il est R.java savoir où se trouve le fichier R.java lorsque vous avez changé le nom du paquet Android. Vous pouvez soit renommer le sous-répertoire sous gen pour qu'il corresponde à votre nouveau nom de package, soit renommer votre ancien nom. Faites le nettoyage et puis changez le nom du paquet au nouveau nom que vous voulez. Cela fonctionne mieux si vous arrêtez Eclipse d'essayer de générer pendant que vous modifiez le nom du package. Sous le menu "Projet" décochez l'option "Construire automatiquement" et aussi quand la boîte de dialogue "Nettoyer ..." demande s'il faut "Commencer une construction immédiatement" décochez la case pour ne pas essayer de construire pendant que vous changez le nom du paquet. Une fois que vous avez changé le nom, vous pouvez réactiver "Build Automatically".

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


R est une classe générée. Si vous utilisez Android Development Tools (ADT), il est généré à chaque fois que le projet est construit. Vous pouvez avoir désactivé "Construire automatiquement".





android-sdk-tools