TL; DR , wenn Sie den Fehler "Paket R existiert nicht" erhalten, sind mögliche Gründe
- Einige Fehler in den XML-Ressourcendateien
-> Beheben Sie XML-Fehler
- das aktuelle Paket unterscheidet sich von dem
RPaket (siehe package
Attribut in AndroidManifest.xml)
-> Import RKlasse, zB import com.example.android.R;
-> oder das entsprechende Paket in Ihrer Quelle verwenden, zB package com.example.android;
-> oder ändern Paket Attribut in AndroidManifest.xml zu
<manifest xmlns:android="..." package="com.example.android" ...>, wenn das entsprechende
- Die verwendeten
RIDs stammen aus den Systemressourcen
-> nicht importieren android.R, sondern den fehlerhaften IDs voranstellen android., z. B. android.R.layout.simple_list_item_2
Sie können android.Rnatürlich importieren, anstatt die IDs vorangestellt zu haben, aber dann können Sie die Anwendungsklasse nicht mehr importieren Rund müssen die Anwendungs-IDs voranstellen, z com.example.android.R.id.main_menu.
Die R Klasse wird automatisch aus den Ressourcen der Anwendung generiert. Es enthält das ids für diese Ressourcen und ist in dem Paket enthalten, das im
<manifest>
Tag in der entsprechenden AndroidManifest.xmlDatei angegeben ist.
Wenn die Ressourcen-XML-Dateien keine Fehler enthalten, wird die R.javaQuelle in einem der folgenden Paket-Unterverzeichnisse generiert gen/und kompiliert.
RDas androidPaket enthält eine weitere Klasse . Diese android.RKlasse enthält einige verschachtelte Klassen, die wiederum enthalten ids und andere Werte für System - Ressourcen.
Um eine Klasse in Java zu verwenden, müssen Sie die Klasse mit dem gesamten Paket benennen, z
java.util.List<Object> list = new java.util.ArrayList<Object>();
oder importieren Sie die Klasse und verwenden Sie sie dann ohne Paket
import java.util.List;
import java.util.ArrayList;
List<Object> list = new ArrayList<Object>();
Sie können eine Klasse auch verwenden, ohne das Paket zu benennen, wenn sich sowohl die aktuelle Klasse als auch die verwendete Klasse im selben Paket befinden, z
package com.example.android;
public class A {
/* ... */
}
package com.example.android;
public class B {
public void useA() {
A a = new A();
}
}