Quelle est la différence entre le
@id/
et@+id/
?
Dans @+id/
le symbole plus, vous devez +
créer un nouveau nom de ressource et l'ajouter au R.java
fichier, mais qu'en est-il @id/
? Dans la documentation de ID
: lors du référencement d'une ressource Android ID
, vous n'avez pas besoin du symbole plus, mais vous devez ajouter l'espace de noms du package android, comme ceci:
android:id="@android:id/list"
Mais dans l'image ci-dessous, Eclipse ne suggère aucun type de @android:id/
.
Sont
@id/
et@android:id/
les mêmes?
android
android-xml
Vikas Patidar
la source
la source
Réponses:
vous vous référez
Android resources
, qui sont déjà définis dans le système Android, avec@android:id/..
pour accéder aux ressources que vous avez définies / créées dans votre projet, vous utilisez@id/..
Plus d'informations
Selon vos clarifications dans le chat, vous avez dit que vous aviez un problème comme celui-ci:
Eh bien, cela dépend du contexte, lorsque vous utilisez l'attribut XML de
android:id
, vous spécifiez un nouvel identifiant et demandez à l'analyseur (ou appelez-le le générateur) de créer une nouvelle entrée dansR.java
, vous devez donc inclure un+
signe.Alors que dans l'autre cas,
android:layout_below="@id/myTextView"
vous faites référence à un identifiant qui a déjà été créé, donc l'analyseur le relie à l'identifiant déjà créé dansR.java
.Encore plus d'informations
Comme vous l'avez dit dans votre discussion, notez que
android:layout_below="@id/myTextView"
ne reconnaîtra pas un élément avec idmyTextView
s'il est écrit après l'élément dans lequel vous l'utilisez.la source
android:layout_below="@+id/myTextView"
et ALORS définir l'élément lui-même avecandroid:id="@id/myTextView"
.+
danslayout_below
ainsi queandroid:id
c'est très bien, carThe '+' means to create the symbol if it doesn't already exist
comme Tanmay Mandal l'a mentionné dans sa belle réponse (encore sous-estimée). Pour cette raison, il n'y a pas non plus d'effet négatif sur l'exécution (probablement une augmentation incommensurablement petite du temps de compilation si ^^).le signe + est un raccourci pour ajouter l'ID à votre liste d'ID de ressource. Sinon, vous devez les avoir dans un fichier xml comme celui-ci
la source
<View android:id="@id/my_logo"/>
Si vous n'aviez pas le fichier de ressources que j'ai défini ci-dessus, vous devriez le faire comme<View android:id="@+id/my_logo"/>
note: vous n'avez besoin de faire le + id qu'une seule fois donc si dans un autre fichier de mise en page, vous avez <View android: id = "+ id / my_logo" /> vous n'auriez pas besoin d'inclure le caractère '+' la prochaine fois que vous utiliserez le même id dans une mise en page.res/drawable/
oures/layout/
oures/values/
et et quel sera le nom de ce fichier? Si vous avez un lien utile à ce sujet, veuillez poster ici.Parfois, vous voyez des références dans vos fichiers de mise en page comme:
<listview id="@+id/android:list">
et
<listview id="@android:id/list">
Quelle est la différence?
.. Je suis content que tu aies demandé ☺
@+id/foo
signifie que vous créez un identifiant nommé foo dans l'espace de noms de votre application. Vous pouvez vous y référer en utilisant@id/foo
.@android:id/foo
signifie que vous faites référence à un identifiant défini dans l'espace de noms Android.Le «+» signifie créer le symbole s'il n'existe pas déjà. Vous n'en avez pas besoin (et ne devez pas l'utiliser) lorsque vous référencez des symboles android: car ceux-ci sont déjà définis pour vous par la plate-forme et vous ne pouvez pas créer le vôtre dans cet espace de noms de toute façon.
Cet espace de noms est l'espace de noms du framework. par exemple, vous devez utiliser
@android:id/list
car c'est l'identifiant que le framework s'attend à trouver .. (le framework ne connaît que les identifiants dans l'espace de noms Android.)Entièrement copié à partir de cette source
la source
En bref
tandis que
la source
De: https://developer.android.com/training/basics/firstapp/building-ui.html
la source
C'est très simple:
"@ + ..." - créer un nouveau
"@ ..." - lien sur l'existant
Source: https://developer.android.com/guide/topics/resources/layout-resource.html#idvalue
la source
Dans le Guide du développeur :
Le symbole at (
@
) au début de la chaîne indique que l'analyseur XML doit analyser et développer le reste de la chaîne ID et l'identifier comme une ressource ID. Le signe plus (+
) signifie qu'il s'agit d'un nouveau nom de ressource qui doit être créé et ajouté à nos ressources (dans leR.java
fichier). Il existe un certain nombre d'autres ressources d'identification offertes par le cadre Android. Lorsque vous référencez un ID de ressource Android, vous n'avez pas besoin du symbole plus, mais vous devez ajouter l'android
espace de noms du package, comme ceci:android:id="@android:id/empty"
la source
Il y a un bug avec Eclipse où parfois si vous venez de créer un nouveau
@+id/..
, il ne sera pas ajouté immédiatement au fichier R.java, même après avoir nettoyé le projet. La solution est de redémarrer Eclipse.Je pense que cela devrait être résolu dès que possible, car cela peut (et par expérience, va) confondre certains développeurs en pensant qu'il y a quelque chose de mal dans leur syntaxe, et essayer de le déboguer même s'il n'y a vraiment rien à déboguer.
la source
Android utilise certains fichiers appelés ressources où les valeurs sont stockées pour les fichiers XML.
Maintenant, lorsque vous utilisez @ id / pour un objet XML, il essaie de faire référence à un identifiant déjà enregistré dans les fichiers de valeurs. D'un autre côté, lorsque vous utilisez @ + id / il enregistre un nouvel identifiant dans les fichiers de valeurs comme l'indique le symbole '+'.
J'espère que cela t'aides :).
la source
@id/
et ce@android:id/
n'est pas pareil.@id/
référençant l'ID dans votre application,@android:id/
référençant un élément dans la plateforme Android.Eclipse a tort.
la source
@id/ referencing ID in your application
Mais eclise donneError: No resource found that matches the given name (at 'id' with value '@id/my_resource_id')
quand nous l'utilisons pour référencer la ressource d'application. Alors, quelle est la différence entre le@id/
et le@+id/
? Comment pourriez-vous dire que l'éclipse est fausse?@id/
ne s'affiche qu'en cas deRelativeLayout
Différence entre
@+id
et@id
est:@+id
est utilisé pour créer un identifiant pour une vue dansR.java
fichier.@id
est utilisé pour référencer l'id créé pour la vue dans le fichier R.java.Nous utilisons
@+id
avecandroid:id=""
, mais que se passe-t-il si l'id n'est pas créé et que nous le référons avant d'être créé (référencement avant).Dans ce cas, nous utilisons
@+id
pour créer id et lors de la définition de la vue, nous devons le référencer.Veuillez vous référer au code ci-dessous:
Dans le code ci-dessus, id pour Spinner
@+id/spinner
est créé dans une autre vue et lors de la définition du spinner, nous faisons référence à l'ID créé ci-dessus.Donc, nous devons créer l'id si nous utilisons la vue avant la création de la vue.
la source
Différence entre
“@+id/”
et“@id/”
dans AndroidLe premier est utilisé pour créer le
ID
composant ui particulier et l'autre est utilisé pour référencer le composant particulierla source
Si l'élément de vue effectue la même opération, vous pouvez utiliser le
@+id
pour chaque entrée dans n'importe quelle mise en page car pendant la compilation de plusieurs,@+id/foo
leR.java
fichier ne crée qu'une seule énumération. Ainsi, par exemple, si j'ai un bouton d'enregistrement sur chaque page qui effectue la même opération, j'utiliseandroid:id="@+id/button_save"
dans chaque mise en page. Le fichier R.java n'a qu'une seule entrée pour le button_save.la source