web-dev-qa-db-de.com

Android Studio: Gradle: Fehler: Symbolvariable kann nicht gefunden werden

Ich arbeitete an meiner App und alles war normal, bis ich versuchte, ein Bild in Java anzuzeigen.

Ich habe die App einmal ausgeführt und sie lief normal, das Bild wurde angezeigt ..__ Danach wurde ich aufgefordert, einige Bibliotheken zu importieren und ich importierte sie. Danach bekam ich Fehler für meine Aktivitäten.

Fehler wie:

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

In MainActivity habe ich folgende Bibliotheken importiert: 

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

und in secondActivity diese:

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

Weiß jemand, wie man das beheben kann?

BEARBEITEN: Ich habe import Android.R; gelöscht und funktioniert jetzt normal.

50
user2668638

Sie sollten Android.R nicht importieren. Das sollte automatisch generiert und erkannt werden. Diese Frage enthält viele hilfreiche Tipps, wenn nach dem Entfernen des Imports ein Fehler bezüglich R auftritt.

Einige grundlegende Schritte nach dem Entfernen des Imports, wenn diese Fehler auftreten:

  • Säubern Sie Ihren Build und bauen Sie ihn dann erneut auf
  • Stellen Sie sicher, dass Ihre XML-Dateien keine Fehler oder Tippfehler enthalten
  • Stellen Sie sicher, dass Ihre Ressourcennamen aus [a-z0-9.] bestehen. Großbuchstaben oder Symbole sind aus irgendeinem Grund nicht zulässig.
  • Gradle-Synchronisierung durchführen (über Extras> Android> Projekt mit Gradle-Dateien synchronisieren)
65
BLaZuRE

Wenn Siemehrere Geschmacksrichtungenverwenden? 

-Stellen Sie sicher, dass die Ressourcendatei nicht nur in einer der Varianten und in main deklariert/hinzugefügt wird.

Beispiel: a_layout_file.xml-Datei, die die Symbolvariablen enthält

src:

flavor1/res/layout/(keine Datei)

flavor2 / res/layout/a_layout_file.xml

main / res/layout/a_layout_file.xml

Bei diesem Setup wird der Fehler ausgegeben: Symbolvariable kann nicht gefunden werden. Dies liegt daran, dass die Ressourcendatei nur in beiden Varianten oder nur im Hauptverzeichnis vorliegen kann.

24
TouchBoarder

Wenn Sie in Ihrem Projekt ein String build config-Feld verwenden, kann dies der Fall sein:

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

Wenn Sie Ihren String wie oben deklarieren, wird der Fehler auftreten. Das Update ist zu ändern:

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

stellen Sie sicher, dass das importierte R nicht von einem anderen Modul stammt. Ich hatte eine Klasse von einem Modul in das Hauptprojekt verschoben und das R war das Modul aus dem Modul.

1
Alberto M

Öffne das Projekt in Android Studio und klicke auf Caches ungültig machen/neu starten

0
RanaUmer

Stellen Sie sicher, dass Sie MainActivity und .ScanActivity in Ihrer AndroidManifest.xml-Datei haben:

<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

Stellen Sie sicher, dass sich Ihre Variablen im Gültigkeitsbereich der Methode befinden, auf die sie verweist. Zum Beispiel hatte ich eine Textansicht lokal in einer Methode in der Klasse definiert und referenzierte sie in einer anderen Methode. 

Ich habe die Textview-Definition außerhalb der Methode direkt unter die Klassendefinition verschoben, sodass die andere Methode auf die Definition zugreifen konnte, wodurch das Problem behoben wurde.

0
Jazzmine

Eine weitere Alternative zu @ TouchBoarders Antwort ist, dass Sie möglicherweise auch zwei Layout-Dateien mit demselben Namen, aber für verschiedene API-Versionen haben. Sie sollten die ältere Datei my_file.xml löschen

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