Qu'est-ce que la diffirence entre l'
@id/
et@+/id
?Comme dans l'
@+id/
: Le signe + (plus) indique que nous sommes de créer le nouveau nom de la ressource et il doit être créé et ajouté à notreR.java
le fichier mais que dire de l'@id/
? Comme à partir de la documentation de l'ID
lorsque le référencement d'un Android ID de ressource, vous n'avez pas besoin de la plus-symbole, mais doit ajouter le package android espace de noms, comme suit:android:id="@android:id/list"
Mais comme dans l'image ci-dessous eclipse ne marche pas ce qui suggère m'tout type d'
@android:id/
.Sont -
@id/
et@android:id
le même?J'apprécierais vraiment une de vos idées élaboré exemple.
Réponses
Trop de publicités?vous vous référez Android resources
, qui sont déjà définis dans le système Android, avec @android:id/..
alors que pour l'accès aux ressources que vous avez défini dans votre projet, vous utilisez @id/..
Plus D'Infos
Comme pour vos précisions dans le chat, vous avez dit que vous avez un problème comme ceci :
Si nous utilisons
android:id="@id/layout_item_id"
il ne fonctionne pas. Au lieu de cela@+id/
fonctionne alors, quelle est la différence ici? Et c'était ma question initiale.
Eh bien, ça dépend du contexte, lorsque vous êtes à l'aide de l'attribut XML de android:id
, alors vous êtes à la définition d'une nouvelle id, et sont instruire l'analyseur (ou appeler le constructeur) pour créer une nouvelle entrée dans R.java
, donc vous devez inclure un +
signe.
Alors que dans l'autre cas, comme android:layout_below="@id/myTextView"
, vous faites référence à un id qui a déjà été créé, alors analyseur de liens ce de la déjà créé id en R.java
.
Plus D'Infos Encore
Comme vous l'avez dit dans votre conversation, note qu' android:layout_below="@id/myTextView"
ne reconnaît pas un élément avec l'id myTextView
si elle est écrite après l'élément que vous utilisez.
Parfois, vous obtenez des références de la mise en page des fichiers comme:
<listview id="@+id/android:list">
et
<listview id="@android:id/list">
Quelle est la différence?
.. Je suis content que vous posiez
@+id/foo
signifie que vous êtes la création d'un id nommé foo dans l'espace de noms de votre application.
Vous pouvez vous référer à l'aide d' @id/foo
.
@android:id/foo
signifie que vous faites référence à un id défini dans l'android de l'espace de noms.
Le '+' signifie pour créer le symbole s'il n'existe pas déjà. Vous n'en avez pas besoin (et ne devrait pas l'utiliser) lors de la référence à android: les symboles, parce que ceux qui sont déjà définies pour vous par la plate-forme et vous ne pouvez pas faire votre propre espace de noms, de toute façon.
Cet espace est l'espace de noms du cadre.
par exemple, vous devez utiliser @android:id/list
parce que cette l'id le cadre s'attend à trouver.. (le cadre d'sait uniquement sur les id dans l'android espace de noms).
Complètement copié à partir de cette source
Il y a un bug avec Eclipse et où, parfois, si vous venez de créer un nouveau @+id/..
, il ne sera pas ajouté immédiatement à l'R.java fichier, même après le nettoyage de la construction du projet. La solution est de redémarrer Eclipse.
Ce que je pense devrait être résolu dès que possible, car il peut (et d'expérience) confondre certains développeurs en pensant qu'il ya quelque chose de mal avec leur syntaxe, et essayez de déboguer, même si il n'y a vraiment rien à déboguer.