Frage R kann nicht aufgelöst werden - Android Fehler


Ich habe gerade das neue Android SDK heruntergeladen und installiert. Ich wollte eine einfache Anwendung erstellen, um es zu testen.

Der Assistent hat diesen Code erstellt:

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

aber Finsternis gibt mir den Fehler

R kann nicht aufgelöst werden

online

setContentView(R.layout.main);

Warum?

PS: Ich habe eine XML-Datei namens main.xml unter res/layout/.


987


Ursprung


Antworten:


Nachdem ich dieses Problem ebenfalls ausfindig gemacht habe, fand ich diesen Hinweis in der Android-Dokumentation:

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

* Hinweis: Eclipse fügt manchmal gerne eine "import android.R" Anweisung bei   Spitze Ihrer Dateien, die Ressourcen verwenden,   vor allem, wenn Sie Eclipse fragen   Importe sortieren oder anderweitig verwalten. Dies   wird deine verursachen machen brechen. Aussehen   aus für diesen fehlerhaften Import   Aussagen und löschen sie. *

Während ich die Android Beispiel Tutorials durchging, würde ich oft das verwenden Strg + Verschiebung + O Befehl "Importe organisieren" und fehlende Importanweisungen generieren. Manchmal würde dies die falsche Importanweisung erzeugen, die die R.java Klasse, die beim Erstellen automatisch generiert wird.


817



Jedes Mal, wenn ich ein Problem mit R hatte, das nicht erzeugt wurde oder sogar verschwand, lag das an einem Problem in der XML-Layoutdatei, das den Aufbau der Anwendung verhinderte.


377



Wann immer du kommst

R kann nicht aufgelöst werden

dann schau nach dem /res Verzeichnis und es muss eine Datei geben, die einen Fehler enthält und die Erstellung der Anwendung verhindert. Zum Beispiel kann es sich um eine Layoutdatei handeln oder es kann aufgrund einer fehlenden Ressource sein, aber Sie haben es bereits in der XML-Datei definiert.

Wenn Sie in einem Ordner wie res / drawables-mdpi zusätzliche, sogar unbenutzte (!) Oder nicht referenzierte (!) Bilder haben, die nicht den Dateinamenskonventionen entsprechen (möglicherweise nur [a-z0-9_.] Enthalten), so wird der Die R.java-Klasse wird möglicherweise nicht generiert, was zur Folge hat, dass alle anderen genannten Posts die Ereigniskette betreffen. Ich hoffe es hilft!


192



mein Projekt haben eine r.java.at am Anfang, R.layout.main Arbeit gut.Aber, nach dem Hinzufügen von Code funktioniert es nicht, und der Fehler ist R.layout.main kann nicht gelöst werden.Was ist das Problem ?

Schau dir deine Importe an. Die Chancen sind, dass die Linie:

import android.R;

wird da sein. Wenn dies der Fall ist, entferne es, damit dein Projekt R nicht mit der Standardklasse für Android-Ressourcen auflöst, sondern mit einer, die automatisch aus deinem / res / -Ordner generiert wird.


128



Und noch etwas, das dieses Problem verursachen könnte:

Ich habe den neuen ADT installiert (v. 22). Es hat aufgehört zu erstellen gen Ordner, der enthält R.java. Die Lösung bestand darin, neue Android SDK Build Tools vom Android SDK Manager zu installieren.

Lösung gefunden Hier


94



R.java ist eine Datei, die die Android Eclipse Plugins während erstellt Erstellen Sie Ihre Anwendung. R.java wird unter dem "gen" erstellt Verzeichnis. Diese Datei wird aus den Informationen in der "res" generiert Verzeichnis. Wenn du rennst, wähle "Project" -> "Clean ..." auf dem Eclipse Menü wird es entfernen und dann neu generieren R.javaDatei.

Das Problem "R kann nicht gelöst werden" passiert, wenn Sie Ihr Passwort ändern Paketname in der AndroidManifest.xml Datei. Es nutzt dein Android Paketname, um ein Unterverzeichnis unter dem Verzeichnis "gen" zu erstellen es speichert die R.javaDatei.

Eclipse kann Probleme beim Ausführen von clean haben, weil es verwirrt ist bei dem die R.java Datei ist, wenn Sie das Android-Paket geändert haben Name. Sie können das Unterverzeichnis entweder umbenennen gen zu deinem passen neuer Paketname, oder Sie können Ihren Paketnamen zurück in den alten ändern Name. Führen Sie die Bereinigung durch und ändern Sie den Paketnamen in den neuen Namen Sie wollen. Dies funktioniert am besten, wenn Sie Eclipse davon abhalten, Builds durchzuführen während Sie den Paketnamen ändern. Unter dem Menü "Projekt" Deaktivieren Sie die Option "Automatisch erstellen" und auch wenn die "Clean ..." Dialog fragt, ob "Build sofort starten" sollte Deaktivieren Sie das Kontrollkästchen, damit es nicht versucht, zu erstellen, während Sie das ändern Paketnamen. Nachdem Sie den Namen geändert haben, können Sie "Build Automatisch "wieder auf.

Beachten Sie, dass wenn Sie AndroidManifest.xml Dateipaketname stimmt nicht überein Wenn Sie Ihren Java-Paketnamen eingeben, fügt Eclipse automatisch einen hinzu "Importieren Sie <Name Ihres Android-Pakets> .R;" Linie in all deinen .java Dateien die irgendwelche Verweise auf R haben. Wenn Sie Ihre ändern AndroidManifest.xml Paketname, manchmal aktualisiert Eclipse nicht alle hinzugefügten Pakete Importe. Verwenden Sie in diesem Fall das Eclipse Refactoring (ALT + Verschiebung + R) um die Importanweisung in eine Ihrer Java - Dateien zu ändern dein neues AndroidManifest.xml Paketnamen. Es ist am besten, dies zu tun während Sie "Automatisch erstellen" deaktiviert haben.


85



Was Will gesagt hat, war richtig

R ist eine automatisch generierte Klasse, die die Konstanten zur Identifizierung Ihrer> Ressourcen enthält. Wenn Sie keine R.java-Datei haben (es wäre gen / eu.mauriziopz.gps / R.java in> Eclipse mit dem 1.5 SDK) würde ich empfehlen, Ihr Projekt zu schließen und wieder zu öffnen oder zu> Projekt> Alle zu bauen (und wählen Sie "Automatisch erstellen", während Sie dort wie von> Josef empfohlen) sind. Wenn das nicht funktioniert, versuchen Sie, ein neues Projekt zu erstellen. Wenn das Problem erneut auftritt, schreiben Sie es erneut, und wir gehen näher darauf ein.

aber ich habe herausgefunden, dass es ein anderes Problem gab, das das erste verursachte. Die Tools im SDK-Verzeichnis hatten nicht die Berechtigungen, die ausgeführt werden mussten. Es war also so, als ob die Tools nicht für Eclipse existierten R.javaDatei.

Durch das Ändern der Berechtigung und die Auswahl von "Automatisch erstellen" wurde das Problem behoben.


82



R ist eine automatisch generierte Klasse, die die Konstanten enthält, die zum Identifizieren Ihrer Ressourcen verwendet werden. Wenn Sie keine R.java-Datei haben (es wäre gen / eu.mauriziopz.gps / R.java in Eclipse mit dem 1.5 SDK), würde ich empfehlen, Ihr Projekt zu schließen und wieder zu öffnen oder zu Projekt> Alle bauen (und Wählen Sie "Automatisch erstellen", während es dort wie von Josef empfohlen) ist. Wenn das nicht funktioniert, versuchen Sie, ein neues Projekt zu erstellen. Wenn das Problem erneut auftritt, schreiben Sie es hier erneut, und wir gehen näher darauf ein.


36



Schließen Sie alle Dateien, säubern Sie das Projekt, starten Sie Eclipse neu.


28



Es lohnt sich einzuchecken AndroidManifest.xml. Das Attribut package hat den richtigen Wert.

Das ist:

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

Nachdem du das geändert hast, R.java wird neu generiert.


22



Dieser Fehler kann auch durch Hinzufügen einer Aktivität zu einem Namespace verursacht werden, der sich vom Stammnamespace für das Paket unterscheidet.

Zum Beispiel, wenn com.example.myapp ist der Root-Namespace für Ihr Paket, Sie können dann eine Aktivität hinzufügen com.example.myapp.activities Namensraum.

Dies erzeugt den Fehler "R kann nicht aufgelöst werden".

Um den Import zu reparieren, sollte das R im Standardnamespace in Ihrer Aktivität wie folgt lauten:

import com.example.myapp.R;

19