IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Studio Java Discussion :

Android Studio class R disparait (apparait en rouge dans le code)


Sujet :

Android Studio Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 66
    Points : 25
    Points
    25
    Par défaut Android Studio class R disparait (apparait en rouge dans le code)
    Bonjour à tous,

    Je suis débutant en développement pour Android et j'utilise Android Studio pour développer.
    Je dois faire une projet d'une application pour valider la fin de ma formation.
    J'ai donc commencé et à plusieurs reprises la classe R.java apparait en rouge sur mon code lors d'appel à des id ou layouts.
    Pour remédier à ce problème j'ai tout d'abord fais plusieurs recherches sur le net, aucune solution trouvée. Du coup j'ai déjà refait un autre projet à 2 reprises mais pour cette fois je me permet de laisser un message sur le forum car c'est la 3eme fois et mon projet commence à devenir conséquent ainsi reconstruire un nouveau projet va me prendre pas mal de temps et j'ai peur que dans quelques jours cette classe R disparaisse de nouveau sans explication.

    La compilation ne marche pas puisque Gradle retourne une erreur, il n'explique pas laquelle mais il devrait s'agir de ce problème car j'ai bien inspecté tout mon code je ne trouve pas d'erreur. L'émulateur lance bien l'application sauf qu'il reprend la version précédente de mon application donc sans ce problème de classe R. Aussi donc impossible de construire l'apk.

    Sur Internet j'ai pu trouvé le chemin pour retrouver cette fameuse classe R.
    Je clique sur Project en haut à gauche puis app/build/generated/source/r/debug/com/example/name/R.java
    Sauf que la classe R n'apparait pas.
    Quand je vais sur le dossier "source" il n'y a pas de dossier "r", je n'ai que 3 dossiers qui sont "aidl", "buildConfig" et "rs".

    Je n'ai pas non plus modifié la classe R avant ce problème, je n'y ai jamais touché.

    Est-ce que quelqu'un aurait une idée de ce qui pourrait provoquer ce problème dans Android Studio? Les origines, les causes de ce problème, sur Internet il y a pas grand chose sur cela, et souvent c'est sans résolution.
    Dois je passer sur Eclipse pour éviter ce problème ?

    Merci à vous tous pour vos réponses.
    Pikkoro

  2. #2
    Membre du Club
    Profil pro
    Développeur mobile
    Inscrit en
    Novembre 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Novembre 2007
    Messages : 107
    Points : 58
    Points
    58
    Par défaut
    Bonjour,

    Cela vient vraisemblablement du fait que tu as une erreur de compilation dans un de tes fichiers de ressources (présent dans le répertoire "res").
    Fais un tour dans tous ces fichiers pour voir d'où vient l'erreur.

    N'hésite pas aussi, que tu trouves l'erreur ou non, à aller dans le menu principal Build -> Clean Project, puis retente une compilation.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 66
    Points : 25
    Points
    25
    Par défaut
    Salut Thenaoh,

    Merci pour ta réponse, donc j'ai vérifié tous mes fichiers ressources (fichiers XML) et je n'ai vu aucune erreur.
    J'ai tout de même supprimé une image pour laquelle j'avais modifié sont type jpg en png juste avant que ce problème apparaisse en pensant que c'était peut être cela mais ce n'est pas le cas.
    Du coup j'ai fait un Build -> Clean project mais toujours pareil

    Graille me dit ça : Gradle build finished with 2 error(s) in 16s 807ms
    Puis : Error:java.lang.RuntimeException: Some file crunching failed, see logs for details
    Et : Error:Execution failed for task ':app:mergeDebugResources'.
    > Error: java.lang.RuntimeException: Some file crunching failed, see logs for details

    Du coup il s'agirait d'une erreur dans mon code Java?

    Et si je fais Build -> Rebuild project?

  4. #4
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 969
    Points : 3 375
    Points
    3 375
    Par défaut
    J'ai déjà eu ton erreur.
    A mon avis tu as retiré un import (juste après Package), vérifie l'historique.
    Si la réponse vous a aidé, pensez à cliquer sur +1

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 66
    Points : 25
    Points
    25
    Par défaut
    Salut Hotcryx,

    Merci pour ta réponse, j'ai vérifié les imports, il n'y a pas de problème à ce niveau, je comprends vraiment pas ce qu'il se passe.

    Pas d'autre raison qui pourrait provoquer une disparition de la classe R? Pourquoi elle s'envole je trouve ça vraiment relou, ils pourraient juste nous signaler quel est le problème clairement.

  6. #6
    Membre du Club
    Profil pro
    Développeur mobile
    Inscrit en
    Novembre 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Novembre 2007
    Messages : 107
    Points : 58
    Points
    58
    Par défaut
    Alors :

    - vérifie bien que tes images ont la bonne extension de fichier (pas de jpg avec extension .png ou autre, par exemple)
    - vérifie que le chemin du répertoire contenant ton projet n'est pas trop long (perso, je me limite à 2 répertoires max entre le lecteur et le répertoire projet, sans espace et sans caractère spécial dans aucun des répertoires, du genre : E:/Repertoire1/Repertoire2/MonProjet)

    Plus d'infos ici : http://stackoverflow.com/questions/3...runcher-png-fa

    En espérant avoir été clair

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 66
    Points : 25
    Points
    25
    Par défaut
    Merci Thenaoh pour ta réponse,
    Bon j'ai vérifié mes drawables car le problème n'était pas dans le nom du répertoire.
    Du coup j'ai supprimé la photo dont j'avais changé l'extension de .jpg vers .png. et ensuite j'ai supprimé dans le layout correspondant où j'avais appliqué un style de backgroud pour le fond d'écran de la vue et hop ça remarchait, la classe R est revenue et j'ai pu recopier avec Gradle.

    Néanmoins, j'avais changé l'extension de cette image en .png car en .jpg le layout et donc l'activité plantée lors du test sur mon téléphone (l'application se fermée inopinément) or lors du test sur l'émulateur ça ne provoquait pas ce problème et l'activité se lançait normalement, mais après avoir changé l'extension du coup j'ai eu un autre problème.
    Aurais-tu une idée de pourquoi ça plantait? Et comment je pourrais faire maintenant avec cette image de fond que j'aimerais mettre.

  8. #8
    Membre du Club
    Profil pro
    Développeur mobile
    Inscrit en
    Novembre 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Novembre 2007
    Messages : 107
    Points : 58
    Points
    58
    Par défaut
    Aucune idée sans message d'erreur...

    Probablement le mieux est de regénérer ton image dans Photoshop ou autre et de retenter ta chance.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 66
    Points : 25
    Points
    25
    Par défaut
    Je l'ai fait avec Paint mais bon ça n'a pas marché du coup je vais abandonner ce fond d'écran, et changer la disposition du layout.
    Mais je viens de constater une erreur dans ce layout.
    Il me dit: "Valid XML document must have a root tag". j'ai cherché un peu sur Internet mais c'est en anglais, visiblement ça serait car j'ai pas fermé mon RelativeLayout mais toutes les balises ouvertes ont bien été fermées donc ce n'est pas ça.
    Une idée de ce que ça signifie ?

  10. #10
    Membre du Club
    Profil pro
    Développeur mobile
    Inscrit en
    Novembre 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Novembre 2007
    Messages : 107
    Points : 58
    Points
    58
    Par défaut
    ça me paraît assez explicite : tu dois avoir 2 blocs XML racines dans ton fichier XML (or il n'en faut qu'un).

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 66
    Points : 25
    Points
    25
    Par défaut
    J'ai 2 RelativeLayout dans un LinearLayout.
    C'est de ça dont tu parles ?

  12. #12
    Membre actif Avatar de jmonga
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2014
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 175
    Points : 269
    Points
    269
    Par défaut
    c'est mieux de mettre ton code pourqu'on l'analyse.
    Jonathan Monga

  13. #13
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 969
    Points : 3 375
    Points
    3 375
    Par défaut
    Citation Envoyé par Pikkoro359 Voir le message
    J'ai 2 RelativeLayout dans un LinearLayout.
    C'est de ça dont tu parles ?
    non, tu peux avoir des layout dans des layout.
    Si la réponse vous a aidé, pensez à cliquer sur +1

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 66
    Points : 25
    Points
    25
    Par défaut
    Salut Jmonga, en fait mon code est très long ou plutôt il y a plus d'une quinzaine d'activités et de layouts alors je voudrais pas vous embêter à tout analyser mais c'est gentil de proposer.


    Pour le moment ça va, si j'ai un autre gros problème je reviendrai vers vous.

    En tout cas merci pour votre aide.

    Même si j'aurais bien aimé qu'on puisse faire une liste de tout les problèmes qui peuvent causer une disparition inattendue de la classe R afin d'aider de futures personnes qui pourraient elles aussi rencontrer ce problème pour pouvoir y remédier rapidement.

Discussions similaires

  1. Android : La classe MediaPlayer
    Par nicolofontana12 dans le forum Codes sources à télécharger
    Réponses: 2
    Dernier message: 27/04/2019, 07h22
  2. Réponses: 1
    Dernier message: 26/12/2016, 17h06
  3. [Android Studio] Classe barrée
    Par amerta dans le forum Android Studio
    Réponses: 2
    Dernier message: 05/04/2016, 11h08
  4. Android Studio utiliser une classe en tant que bibliothèque
    Par ChPr dans le forum Android Studio
    Réponses: 0
    Dernier message: 17/11/2015, 23h06
  5. Réponses: 1
    Dernier message: 02/10/2009, 16h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo