web-dev-qa-db-fra.com

Android Studio: Gradle: erreur: impossible de trouver la variable de symbole

Je travaillais sur mon application et tout était normal jusqu'à ce que j'essaie d'afficher une image en Java.

J'ai exécuté l'application une fois et elle fonctionnait normalement, l'image était affichée . Après cela, il m'a demandé d'importer des bibliothèques et je les ai importées. Après cela, j'ai eu des erreurs pour mes activités.

Des erreurs comme:

Gradle: error: cannot find symbol variable activity_main
Gradle: error: cannot find symbol variable button1
Gradle: error: cannot find symbol variable button2
Gradle: error: cannot find symbol variable textView
Gradle: error: cannot find symbol variable secondActivity

Dans MainActivity, j'ai importé ces bibliothèques: 

import Android.R;
import Android.content.Intent;
import Android.os.Bundle;
import Android.app.Activity;
import Android.view.Menu;
import Android.widget.Button;

et dans secondActivity ceux-ci:

import Android.R;
import Android.app.Activity;
import Android.os.Bundle;
import Android.view.View;
import Android.widget.Button;

Est-ce que quelqu'un sait comment réparer ceci?

EDIT: J'ai supprimé import Android.R; et maintenant cela fonctionne normalement.

50
user2668638

Vous ne devriez pas importer Android.R. Cela devrait être automatiquement généré et reconnu. Cette question contient de nombreux conseils utiles si vous obtenez une erreur en faisant référence à R après la suppression de l'importation.

Quelques étapes de base après la suppression de l'importation, si ces erreurs apparaissent:

  • Nettoyez votre build, puis reconstruisez
  • Assurez-vous qu'il n'y a pas d'erreurs ou de fautes de frappe dans vos fichiers XML
  • Assurez-vous que vos noms de ressources sont constitués de [a-z0-9.]. Les capitales ou les symboles ne sont pas autorisés pour une raison quelconque.
  • Effectuer une synchronisation Gradle (via Outils> Android> Synchroniser un projet avec des fichiers Gradle)
65
BLaZuRE

Si vous utilisezplusieurs saveurs

Assurez-vous que le fichier de ressources n'est pas déclaré/ajouté à la fois dans une des versions et dans la version principale.

Exemple: fichier a_layout_file.xml contenant la ou les variables de symbole

src:

saveur1/res/layout/(aucun fichier)

flavour2 / res/layout/a_layout_file.xml

main / res/layout/a_layout_file.xml

Cette configuration générera l'erreur: impossible de trouver la variable de symbole, car le fichier de ressources ne peut figurer que dans les deux versions ou uniquement.

24
TouchBoarder

Si vous utilisez un champ de configuration String dans votre projet, cela pourrait être le cas:

buildConfigField "String", "source", "play"

Si vous déclarez votre chaîne comme ci-dessus, l'erreur se produira. Le correctif est de le changer en:

buildConfigField "String", "source", "\"play\""
13
Sean Goudarzi

assurez-vous que le R importé ne provient pas d'un autre module. J'avais déplacé une classe d'un module vers le projet principal et le R était celui du module.

1
Alberto M

Ouvrez le projet dans le studio Android, cliquez sur le fichier, puis sur Invalider les caches/redémarrer.

0
RanaUmer

Assurez-vous que vous avez MainActivity et .ScanActivity dans votre fichier AndroidManifest.xml:

<activity Android:name=".MainActivity">
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />
            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity Android:name=".ScanActivity">

    </activity>
0
julien bouteloup

Assurez-vous que vos variables sont à la portée de la méthode qui le référence. Par exemple, j'avais défini une vue de texte localement dans une méthode de la classe et la référençais dans une autre méthode. 

J'ai déplacé la définition de textview en dehors de la méthode juste en dessous de la définition de classe afin que l'autre méthode puisse accéder à la définition, ce qui a résolu le problème.

0
Jazzmine

Une autre alternative à la réponse de @ TouchBoarder ci-dessus est que vous pouvez également avoir deux fichiers de présentation avec le même nom mais pour des versions différentes de l'API. Vous devez supprimer l'ancien fichier my_file.xml

my_file.xml
my_file.xml(v21)
0
Bond James