TL;DR Si vous obtenez l'erreur "le paquet R n'existe pas", les raisons possibles sont les suivantes
- une erreur dans les fichiers de ressources XML
-> corriger les erreurs XML
- le paquet actuel est différent du paquet
R
(voir package
dans AndroidManifest.xml).
-> importation R
la classe, par exemple import com.example.android.R;
-> ou utilisez le paquetage approprié dans votre source, par ex. package com.example.android;
-> ou modifier le paquet dans le fichier AndroidManifest.xml en tant que <manifest xmlns:android="..." package="com.example.android" ...>
si c'est approprié
- l'utilisé
R
les identifiants proviennent des ressources du système
-> ne pas importer android.R
mais préfixez les identifiants en question avec android.
par exemple android.R.layout.simple_list_item_2
Vous pouvez importer android.R
au lieu de préfixer les ids bien sûr, mais alors vous ne pouvez pas importer l'application R
et doivent préfixer les identifiants de l'application, par ex. com.example.android.R.id.main_menu
.
Le site R
clase est généré automatiquement à partir de l'application de l'application. Il contient les id
pour ces ressources et est contenu dans le paquet nommé dans le <manifest>
dans l'étiquette correspondante AndroidManifest.xml
fichier.
S'il n'y a pas d'erreurs dans les fichiers XML des ressources, le programme R.java
source sera généré dans un sous-répertoire de paquetage situé en dessous de gen/
et compilé.
Il y a un autre R
située dans la classe android
paquet. Ce site android.R
contient des classes imbriquées, qui contiennent elles-mêmes des classes id
et d'autres valeurs pour système ressources.
Pour utiliser une classe en Java, vous devez nommer la classe avec l'entier paquet, par exemple
java.util.List<Object> list = new java.util.ArrayList<Object>();
ou importer la classe et l'utiliser ensuite sans package
import java.util.List;
import java.util.ArrayList;
List<Object> list = new ArrayList<Object>();
Vous pouvez aussi utiliser une classe sans nommer le paquetage, si la classe actuelle et la classe utilisée sont toutes deux i classe actuelle et la classe utilisée se trouvent dans le même paquetage, par ex.
package com.example.android;
public class A {
/* ... */
}
package com.example.android;
public class B {
public void useA() {
A a = new A();
}
}