Je suis nouveau sur kotlin, j'ai converti du code à partir de Java mais il semble qu'il y ait un problème, le R dans findViewById (R.id.my_id) est mis en surbrillance en rouge et affiche le message suivant: "Référence non résolue: R" .. Je cherchais une solution mais il me semble que je ne l'ai pas trouvée. Alors, que dois-je faire? Voici une capture d'écran:
Le problème peut être causé par de nombreux facteurs,
com.Android.tools.build:gradle
; le remplacer par une version plus stable résoudrait le problème: par exemple: com.Android.tools.build:gradle:3.4.0-alpha02
avec com.Android.tools.build:gradle:3.2.1
De plus, le fait d'avoir des bibliothèques du même groupe, mais avec des versions différentes, peut être à l'origine du problème, voire davantage d'erreurs d'exécution.
Cela peut également se produire en raison d'une incompatibilité de ressources et de code. Le fait de inclure cette ligne d'importation dans votre activité peut également résoudre le problème: import com.package.name.R
Build -> Clean Project / Rebuild Project
- Nettoyage IDE cash contribue également aux performances et à la mémoire. Sous Android Studio, il ressemblerait à ceci: File-> Invalidate Chases/ Restart -> Invalidate Cashes and Restart
. , , - , UpperCase or special Letters
kotlinx.Android.synthetic.main.activity_page.*
ou si vous utilisez une vue personnalisée: kotlinx.Android.synthetic.main.view_layout.view.*
après cela Dans la méthode onCreat () d’une activité, il vous suffit d’appeler l’identifiant, par exemple: my_edit_text_ID.text = "Kotlin Dbest!"
, ou à partir d’une vue personnalisée: mCostumView.my_edit_text_ID.text = "Kotlin Dbest!"
MODIFIER :
J'ai été confronté à ce problème depuis un moment et le problème était que la bibliothèque '' R '' avait été importée de 2 sources différentes:
com.Android.R
com.example.package.R
Vous devez uniquement importer la bibliothèque '' R '' avec le nom de votre package d'application, Dans ce cas, com.example.package.R
Parfois, la bibliothèque n'est pas importée du tout. Pour l'importer, cliquez sur la référence Non résolue R
et appuyez sur Alt + Enter
J'ai utilisé com.Android.tools.build:gradle:3.3.0-alpha13 et le même problème. Passer à la version stable 3.2.1 a résolu ce problème pour moi.
C'est donc une erreur trompeuse.
Je vais expliquer la vue de 30 000 pieds de ce qui se passe. Ce n'est pas un ordre EXACT ou un flux EXACT, c'est juste assez proche;) donc si vous en savez plus que je fais de l'ordre exact et que je tiens à faire des corrections avec des liens, n'hésitez pas, je ne vous arrêterai pas :).
Le processus
Le fichier R est un code généré.
Il y a un ordre à la génération.
Gradle va faire sa magie, tirer ses dépendances et lancer c'est arbre d'avertissement et d'erreur en premier,
puis Android convertit tous les Kotlin en Java dans les coulisses. Yup c'est à droite, notre bien-aimé Kotlin doit encore être Java pour compiler pour notre machine virtuelle ART bien-aimée.
Ensuite, il exécute les adaptateurs que vous avez créés pour JVM Statics et quelques autres tâches . Ensuite, il compile d'abord tous les fichiers de liaison de données XML pour créer le fichier fichiers de liaison de données générés.
Si tout réussit, il passe au traitement des actifs et à Ressources. Ce qui crée des pointeurs ou des identifiants pour chaque ressource pour laquelle vous référence dans le code. Ensuite, il va parcourir et commencer à compiler le fichier code et processus d'emballage après cela.
C'est un processus assez simple, mais c'est là que réside le problème.
L'erreur trompeuse
Si une étape échoue avant la fin de la génération R, le R n'est pas généré. Parfois, une simple reconstruction suffit, parfois un simple Fichier-> Invalider le cache et le redémarrage suffisent. Cependant, le plus souvent, vous avez un problème de code dans votre répertoire, votre fichier xml, votre liaison de données ou vos adaptateurs qui empêche le compilateur d’atteindre même le stade de la génération R.
Donc, la prochaine question est
"Eh bien, comment pouvons-nous résoudre le problème si les erreurs ne valent rien ou Inexistantes".
Commençons par les nombreuses façons dont ces erreurs se présentent.
Ensuite, parlons des candidats potentiels à l'origine du problème. Comme il y en a tellement beaucoup lol.
Malheureusement, cela se produit souvent dans les technologies de pointe Edge où les outils d'interface utilisateur ne sont pas encore à la hauteur des outils basés sur les terminaux. Donc, je vous suggère de courir à partir de la racine du projet dans un terminal avec
bash gradlew assembleRelease --debug
Quand cela échoue, et ce sera le cas. Commencez à faire défiler les journaux jusqu'à ce que vous trouviez le rouge où vous voyez ce qui échoue réellement et empêche la prochaine étape de se produire.
Cela vous sera particulièrement utile lorsque vous commencerez à traiter les liaisons de données. POINTE: .
Lorsque vous commencez à traiter les liaisons de données, assurez-vous de les compiler et de les exécuter souvent, car le but est de les reconnaître immédiatement avant de créer d’autres fichiers, afin de vous assurer que vous n’avez pas interrompu la génération et rendu votre vie BEAUCOUP plus facile de connaître le code que vous venez d’ajouter. avant d'aller trop loin.
Temps à compiler et à exécuter pour confirmer aucun problème avant de passer.
.
Code heureux.
Happy Coding
Utilisez les commandes de gradation.
Dans Android Studio, dans le menu de droite:Gradle -> :app -> Tasks -> build -> clean
.
Après cela, Gradle -> :app -> Tasks -> build -> build
J'ai eu le même problème et j'ai essayé de ne pas rétrograder de la version 3.3 à la version 3.2.1. Au lieu de cela, j'ai mis à jour Android Studio vers la version 3.3, ce qui me convenait bien ;-)
Cela a fonctionné pour moi. La quantité de travail dépend de la taille de votre projet. J'ai démarré un nouveau projet, créé les modules requis (XML, Kotlin, couleurs, chaînes de caractères, etc.), puis copié le code dans les modules du nouveau projet à partir des modules de l'ancien projet. La copie XML économise beaucoup de temps par rapport à la recréation de l'interface utilisateur. Globalement, cela prend un peu de temps, mais j’ai passé beaucoup plus de temps à corriger l’erreur de référence non résolue sans cette erreur.
ESSAYE ÇA
Accédez au fichier content_main.xml et vous devez modifier le
Android:id="@+id/??????">
ligne de code correspondant à l'identifiant que vous avez attribué à votre fichier.
Remplacez le point d'interrogation ??????
par le nom d'identifiant de fichier associé (si vous ne connaissez pas l'identifiant, accédez à l'onglet Conception en bas et cliquez sur l'actif associé.
Sur le côté droit sous les attributs, vous pouvez trouver l'ID que vous lui avez donné . S'il est vide, vous pouvez le nommer à nouveau et Android Studio écrira le code.
Puis redémarrez Android Studio. J'espère que cela aidera. Bonne codage.
J'ai eu le même problème avec la référence R aussi ... .. Enfin, Android Studio 3.3 a été publié et en utilisant 'com.Android.tools.build:gradle:3.3.0'
, le problème a été corrigé!
Je crois que je suis tombé sur la vraie réponse (bien que par accident).
En outre, mon fichier KT ayant échoué à l’opération dans l’opération, ainsi que dans d’autres classes en Java. Ce que j'ai remarqué, c'est qu'il y avait une différence de casse entre les noms de fichiers. Une fois que j'ai corrigé les instructions d'importation pour correspondre à la casse du paquet (aka, dossier), les erreurs résolues.