142 votes

le paquet R n'existe pas

Je reçois le paquet redouté R n'existe pas, ça me tue. Le code est bon, j'ai des applications sur le marché qui utilisent ce code.

Maintenant, ça affecte les simples webview applications. o.0

R.string.app_name est erroné mon main.xml y string.xml est bien. Je suis tellement confus.

J'ai réouvert une ancienne version pour "borrow" un peu de code et il a été inondé de R. errors. J'ai fait un nettoyage et rien n'a changé sauf l'importation. R.android étant ajouté en haut.

J'ai même chargé dans Netbeans et j'obtiens la même chose. Le nettoyage ne fonctionne pas. Puis-je écrire le R.java me classer moi-même ?

Qu'est-ce que c'est ? R chose ? n'est-ce pas R . censé correspondre à R.java

152voto

Mathijs Segers Points 689

Pour tous ceux qui ont rencontré ce problème, J'ai remanié en renommant les dossiers de l'espace de nom. J'ai juste oublié d'éditer aussi AndroidManifest et c'est pourquoi j'ai eu cette erreur.

Assurez-vous de vérifier cela également.

110voto

EmacsFodder Points 12284

Pour faire simple :

import your.app.package.R;

Bien sûr, le remplacement your.app.package avec votre paquetage d'applications.

Dans toutes les classes qui utilisent des références de ressources R, supprimer tout autre import con .R c'est-à-dire import android.R;

59voto

Olaf Dietsche Points 35264

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

26voto

J. Maes Points 2561

N'essayez jamais, jamais, d'écrire la classe R vous-même !

Avez-vous importé la bonne classe R dans vos fichiers ?

Faire

import android.R;

au lieu de

import com.example.R;

semble être le problème pour beaucoup de gens. Après avoir nettoyé et construit, mes classes importent parfois la mauvaise.

14voto

Din Islam Milon Points 61

Si vous développez dans Android Studio et que vous avez modifié le nom du paquet, vous devez changer le nom du paquet dans le manifeste Android et le fichier app gradle.

 applicationId "change here your package name"

et dans le fichier manifeste

 package="change here your package name"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X