TL; DR , si vous obtenez l'erreur "le package R n'existe pas", les raisons possibles sont
- une erreur dans les fichiers de ressources XML
-> corriger les erreurs XML
- le package actuel est différent du
Rpackage (voir l' package
attribut dans AndroidManifest.xml)
-> importez la Rclasse, par exemple import com.example.android.R;
-> ou utilisez le package approprié dans votre source, par exemple package com.example.android;
-> ou modifiez l' attribut package dans AndroidManifest.xml en
<manifest xmlns:android="..." package="com.example.android" ...>, si cela est approprié
- les
Ridentifiants utilisés proviennent des ressources système
-> n'importez pas android.R, mais préfixez les identifiants incriminés avec android., par exemple, android.R.layout.simple_list_item_2
vous pouvez importer android.Rau lieu de préfixer les identifiants bien sûr, mais vous ne pouvez plus importer la Rclasse d' application et devez préfixer les identifiants d'application, par exemple com.example.android.R.id.main_menu.
La R classe est générée automatiquement à partir des ressources de l'application. Il contient les ids de ces ressources et est contenu dans le package nommé dans la
<manifest>
balise du AndroidManifest.xmlfichier correspondant .
S'il n'y a aucune erreur dans les fichiers XML de ressources, la R.javasource sera générée dans un sous-répertoire de package ci gen/- dessous et compilée.
Il existe une autre Rclasse située dans le androidpackage. Cette android.Rclasse contient des classes imbriquées, qui à leur tour contiennent des ids et d'autres valeurs pour les ressources système .
Pour utiliser une classe en Java, vous devez nommer la classe avec le package complet, par exemple
java.util.List<Object> list = new java.util.ArrayList<Object>();
ou importez la classe puis utilisez-la sans package
import java.util.List;
import java.util.ArrayList;
List<Object> list = new ArrayList<Object>();
Vous pouvez également utiliser une classe sans nommer le package, si la classe actuelle et la classe utilisée sont dans le même package, par exemple
package com.example.android;
public class A {
/* ... */
}
package com.example.android;
public class B {
public void useA() {
A a = new A();
}
}