2010-03-21 3 views
16

J'ai ajouté des éléments de l'interface utilisateur au fichier main.xml du dossier res \ layout et lorsque j'essaie d'y accéder via l'appel R.layout.my_uielement, l'élément de l'interface utilisateur que j'ai créé est pas ici. Même lorsque j'ajoute un nouveau fichier XML avec des éléments d'interface utilisateur, il n'apparaît toujours pas dans la classe R.layout. J'ai vérifié les identifiants sur eux et ils ont le format correct (je pense): android:id="@+id/my_button". Quel pourrait être le problème? Ai-je besoin de compiler le code en premier? J'ai déjà essayé adb kill-server puis adb start-server. Cela ne semble pas aider. J'ai également essayé R.id.my_uielement, il ne s'enregistre pas non plus.Le fichier R.java ne se met pas à jour avec l'ID de l'élément IU

+4

Avez-vous essayé Clean Project dans Eclipse? Les fichiers xml sont-ils dans le bon dossier? – Pentium10

+1

oui ils sont dans le dossier res \ layout. Clean Project ne fonctionne pas non plus. –

+1

Mise à niveau des plug-ins Eclipse ADT. Copiez la source dans un nouveau dossier et importez-la dans un nouveau projet. Essayez de recréer le fichier XML que vous avez. Quoi qu'il en soit, postez la réponse si vous découvrez. – Pentium10

Répondre

35

Cela peut ne pas être le cas pour vous, mais parfois quand j'utiliser quelque chose du paquet android.R (ressources android par défaut) et j'utiliser Dans ma classe avant de faire référence à quelque chose de mon propre paquet de ressources, Eclipse ajoute l'instruction import android.R; dans mes importations. Cela entrera en conflit avec le comportement par défaut de recherche implicite dans les ressources de votre paquet. Vérifiez vos instructions d'importation pour import Android.R;. Si c'est là, retirez-le. Et, si vous utilisez quelque chose de android.R, qualifiez-le complètement lorsque vous l'utilisez dans le code.

+0

Brillant! J'aimerais pouvoir vous donner 100 votes: D Je cherche une réponse depuis si longtemps. Merci! – marienke

6

Utilisez R.id.your_ui_element, non R.layout.your_element

+0

Cela ne marche pas non plus. –

2

J'ai également fait face à ce problème. Le R.java n'a été ni généré ni mis à jour.

Si R.java n'est pas généré lorsque vous créez le projet, exécutez votre projet 'empty`. Un R.java avec des références aux ressources sera généré automatiquement.

Si R.java ne reçoit pas mis à jour, Vérifier les mises à jour Aide -> Rechercher les mises à jour dans Eclipse et mettre à jour votre SDK et ADT si nécessaire.

+0

Cela m'a aidé, en conjonction avec le projet de nettoyage. –

+0

@IgorG. Je suis content que cela ait aidé. J'ai passé 2 jours avant que je suis tombé sur cette question sur stackoverflow – Pramod

9

Le projet Clean fonctionne correctement. Dans Eclipse, si vous changez simplement des composants xml, cela ne génère pas toujours un nouveau fichier. Le nettoyage le fait.

+1

Yep ça marche, merci! – Signcodeindie

+1

Merci cela a fonctionné pour moi. – Wak

+0

Merci, cela a fonctionné pour moi. –

2

Après 2 jours, je trouve un moyen de le réparer ...

j'avais sauvé projet à moitié fait dans mon courrier, alors quand je R.java évanoui juste remplacé par l'ancien fichier R.java, que ce soit réglé beaucoup de erreurs, puis fait les changements nécessaires et construit le projet (construire pas propre) ... Je ne sais pas si propre et la construction effectue le même travail ou pas .. mais chaque fois que je l'ai nettoyé, R.java utilisé pour devenir invisible ...

1

J'ai remarqué que mon fichier R.java n'est pas toujours correctement mis à jour lorsque j'ajoute des éléments dans mon fichier strings.xml ou ailleurs. Si j'utilise une nouvelle valeur ajoutée comme R.string.newString, la valeur entière réelle peut toujours pointer vers R.string.oldString ou quoi que ce soit (il semble généralement être l'élément directement au-dessus ou au-dessous du nouvel élément dans strings.xml mais Je n'ai pas encore défini le modèle pour le moment).

Vous n'êtes pas censé modifier le fichier R.java, mais il ne dit rien de la supprimer (pas que j'ai vu, de toute façon). J'ai découvert que la suppression de R.java règle généralement mes problèmes liés aux ressources car Eclipse régénère immédiatement le fichier avec les valeurs entières correctement affectées. S'il vous plaît noter, je suis très débutant chez Eclipse, donc je ne comprends pas les conséquences de la suppression de R.java, mais il semble bien fonctionner pour moi jusqu'à présent.Si ce que je fais est très mauvais, s'il vous plaît faites le moi savoir.

2

Nettoyer fonctionne parce que BUILD BUILD le projet après le nettoyage. Donc le problème est (du moins c'était dans mon cas, car j'ai éteint la compilation automatique quelques jours plus tôt) qu'après avoir ajouté un élément ou n'importe quoi dans un fichier .xml, l'éclipse ne le construit pas et ne peut pas rafraîchir le R.java.

1

Aucun d'entre eux a travaillé pour moi! La seule façon dont je peux accéder à un @+id/foo est par myPackage.R.id.foo.

Questions connexes