2013-06-14 15 views
10

Ich hatte ein Projekt im Android Studio geöffnet. Es wurde vom Assistenten generiert und funktioniert gut.Android-Studio kann plötzlich nicht lösen Symbol R

Ich habe einige kleine Änderungen an activity_main.xml vorgenommen und als ich wieder zu MainActivity.java wechselte, erhalte ich den Fehler an mehreren Stellen, an denen er R nicht auflösen kann. Ich könnte etwas dafür getan haben. Aber ich bin mir nicht sicher, was seit dem, als ich das XML bearbeitet habe.

Weiß jemand, was könnte die Lösung dafür sein? Ich kann die R.java in r/release/packege/com/finden und es sieht gut aus.

+1

haben Sie versucht, Ihr Projekt zu reinigen? – Anila

+4

Dies kann aufgrund von Fehlern in XML-Dateien passieren. Schauen Sie sich die Dinge an, die Sie geändert haben, nur für den Fall. Manchmal ist es aber auch nur ein "sauberes". Ich hatte beide Instanzen selbst. – LokiSinclair

+0

Danke. Ich habe beides gemacht. Ich hatte einen kleinen Fehler in meinem XML und ich habe auch das Projekt neu erstellt. Jetzt funktioniert es. Seltsam ist, dass die ID immer noch warnt, dass etwas nicht stimmt. –

Antwort

30

Die meiste Zeit ist es auf eine schlechte XML-Datei zurückzuführen. XML-Dateien können Layoutdateien, Wertdateien oder die Manifestdatei sein. Überprüfen Sie Ihre XML-Dateien und versuchen Sie, das Projekt neu zu erstellen. Manchmal funktioniert auch das Putzen und Neuaufbau des Projekts.

+0

Stellen Sie außerdem sicher, dass keine Ordner dupliziert wurden. Vor allem im Verzeichnis '/ res'. – Wenger

+1

Ich bin nicht ganz sicher, dass dies der Grund für das Problem zur Zeit meiner Frage war. Aber da dies nach meiner Erfahrung der häufigste Grund dafür ist, dass sowohl AS als auch Eclipse Probleme bei der Auflösung von R haben, halte ich das für die richtige Antwort. –

+0

Das ist mir sehr oft passiert. Normalerweise ist es ein nicht-maskiertes Zeichen in meinen XML-Kommentaren. Ich wünschte, Android Studio würde das Problem aufzeigen, anstatt dass Sie alle vorherigen XML-Änderungen durchforsten müssen. – codingjeremy

1

Versuchen Sie das Projekt, indem Sie folgendermaßen vorgehen zu reinigen:

Wenn Sie Windows verwenden, öffnen CMD, cd in Ihr Projektverzeichnis und gradlew clean laufen.

+0

Das ist wahrscheinlich ein guter Vorschlag. Das ursprüngliche Problem trat in einem Vorprojekt auf, so dass es in diesem Moment nicht die Lösung gewesen wäre. Anscheinend gab es einen Fehler im aktuellen Eclipse-Arbeitsbereich, wahrscheinlich aufgrund einer Aptana-Installation. Als ich das Projekt in einen anderen Arbeitsbereich verschoben habe, verschwand das Problem. –

0

Ich hatte gerade dieses Problem und der Grund dafür war, dass das Layout Android Studio automatisch einen Import auf die Quelldateien nach der Bearbeitung hinzugefügt:

import android.R 

Natürlich ist die Haupt-R-Klasse hat nicht alle Symbole in Ihren Layouts was alles zu einem roten Durcheinander machte. Das Entfernen dieser Zeile löste sich für mich.

EDIT: Scheint wie Eklipse hatte the same problem früh.

3

Stellen Sie außerdem sicher, dass Sie keinen Zeichensatz mit einem ungültigen Namen haben. Ich hatte ein Zeichen mit einem numerischen Dateinamen und das war nicht gut mit Android, so dass es R.java nicht kompilieren konnte.

+0

Das ist ein wirklich guter Rat. Nicht das Problem, das ich hatte. –

1

Ich hatte das gleiche Problem auftauchen (zuletzt während ich beim Mittagessen - kam zurück und WTF?). Und da es sich um ein einfaches Hallo-Welt-Programm handelte, gab es nicht viele Orte, an denen sich diese Fehler verstecken konnten. Die XML-Dateien sahen gut aus - ich hatte das Manifest nicht einmal berührt. Eine Reinigung hat nichts getan.

Also habe ich einen Abschnitt meiner layout.xml auskommentiert, um das Problem einzugrenzen. Sicher genug, die Fehler gingen weg.

Und dann habe ich einfach UNCommented genau das, was ich kommentiert hatte ... und alles war gut gelaunt. Seltsam! Vielleicht gab es noch einige Probleme, die berührt werden mussten, um die Layoutdatei neu zu erstellen. Man könnte meinen, dass so etwas heutzutage nicht passieren würde, aber das tun sie.

Eine weitere Sache! Es ist möglich, dass auch etwas mit Java passiert. Es ist sehr schwierig, den Status der Java-Laufzeitumgebung zu kennen. Einfacher, um noch einmal zu beginnen. Also noch eine Sache zu versuchen: Starten Sie Ihren Computer neu, starten Sie Android Studio neu, und dann Caches ungültig und neu starten. Ja, das ganze Schwein.

+2

Als Addendum erinnere ich mich an die alten Tage des Programmierens. Wenn Sie versehentlich die Steuertaste während der Eingabe drücken, können Sie einfach ein verstecktes Steuerzeichen in Ihren Code einfügen. Während Sie diese Zeichen nicht sehen konnten, konnte der Compiler sicher! Viele Programmierer in den 80er Jahren verbrachten lange Stunden damit, diese Käfer zu jagen. Vielleicht erscheint so etwas in Eclipse? Irgendwelche Kommentare? –

1

Ich bekomme manchmal dies nach der Aktualisierung von Android Studio. Nicht immer sofort, aber nach einer Weile (vielleicht nach einem Neustart des Programms).

Hier ist, was für mich funktioniert hat: Tools - Android - Sync-Projekt mit Gradle-Dateien.

Aus irgendeinem Grund hat das Klicken auf den Link "Jetzt synchronisieren", der nach dem Ändern der Build.Gradle-Datei angezeigt wird, keine Änderung für mich vorgenommen. Obwohl die Nachrichten ungefähr dasselbe sagen.

1

Ich hatte das gleiche Problem, weil ich in meiner strings.xml vergessen hatte, ein Apostroph zu entkommen. Verwenden Sie "\ '" niemals "'" in der XML-Datei!

3

Stellen Sie sicher, dass in Ihrem AndroidManifest.xml der Paketname korrekt ist. Das hat das Problem für mich behoben, wenn meine R.whatever rot markiert war!

+0

Ein sehr großer DUH-Moment für mich. Ich musste auch Studio neu starten, da es einen Legacy-Dateipfad gab. – TheRealJAG

0

Wenn alles andere fehlschlägt, hilft manchmal android neu zu starten. Während des Starts werden die Dateien neu geladen, und dies ermöglicht die Erkennung des R

0

Dieses Problem tritt auf, wenn Sie den Paketnamen umbenennen. Nach dem Umbenennen des Paketnamens müssen Sie das ältere Paket Name zu einem neueren eins ändern. Für mich hat es das Problem gelöst, sobald ich das geändert habe. Danach können Sie Fehler in xml-Dateien bekommen, die Sie ändern müssen der Paketname dort auch. Das ist es.

0

Ich hatte gerade das R-Problem und nach ein paar Stunden festgestellt, dass das Problem war meine regionale Schreibweise wie in einer meiner Xml-Dateien verwendet. Das Problemwort war Verhalten, das Verhalten von Amerikanern geschrieben wird. Ich bin Australier und wir lernen die alte englische Art, bestimmte Wörter zu buchstabieren, und so habe ich mehrmals darüber nachgeschaut, bevor der Groschen fiel. Es ist eine kleine Sache, aber es kann leicht schleichen und beißen Sie in die unteren Regionen und ist schwer zu erkennen und kann viel Zeit verschwenden.

0

In meinem Fall hatte ich gerade einige neue Bilddateien zum Zeichnungsordner hinzugefügt und versehentlich ein GIF mit meinen PNGs dort hineingelegt. Ich hatte sie noch gar nicht in das Projekt integriert. Ich entfernte das GIF und machte dann einen sauberen und Wiederaufbau. Das hat es für mich behoben.

0

Ich hatte dieses genaue Problem beim Importieren eines Udacity-Beispielprogramms. Der Nachrichtenbereich in Android Studio gab an, dass der Fehler beim Laden eines PNG in einem Unterverzeichnis tief in den Projektdateien fehlgeschlagen ist.

Es stellte sich heraus, dass das PNG mit allen Unterverzeichnispfadnamen größer als die von Windows 7 definierte Namenslänge war (260 Zeichen). Ich habe dem Projekt einen kürzeren Namen gegeben - um etwas Platz zu schaffen - und dann hat das Android Studio glücklich zusammengestellt.

Verwandte Themen