2012-06-22 23 views
19

Acabo de empezar a usar Android, y tengo aproximadamente 5 archivos de diseño terminados. Sin embargo, me acabo de dar cuenta de que he usado @id y @ + id de forma intercambiable, pero no estoy seguro de cuál es la diferencia exacta entre los dos.¿Cuál es la diferencia entre @id y @ + id?

Respuesta

37

Debe usar @+id cuando defina su propio Id para una vista.

Exactamente desde docs:

El al-símbolo (@) al principio de la cadena indica que el analizador XML debe analizar y ampliar el resto de la cadena de ID y identificarlo como un recurso de ID. El signo más (+) significa que es un nuevo nombre de recurso que debe crearse y agregarse a nuestros recursos (en el archivo R.java). Hay una serie de otros recursos de ID que son ofrecidos por Android framework. Al hacer referencia a un ID de recurso de Android , no necesita el símbolo más, pero debe agregar el espacio de nombre del paquete android .

Y ahora añado para usted ejemplo práctico:

<Button 
    android:id="@+id/start" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
/> 

<Button 
    android:id="@+id/check" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/start" 
/> 

Así que aquí, se crearon dos IDs, inicie y comprobar. Luego, en su aplicación, puede conectarse a ellos con findViewById(R.id.start).

Y esto android:layout_below="@id/start" existentes se refieren a id.start y significa que su Button con id cheque se colocará por debajo Button con id comenzar.

+0

Ok, gracias, ¿esto significa que puedo usar @ + id siempre que quiera sin problemas? – JuiCe

+0

sí, cuando desee crear una nueva ID única, simplemente use @ + id como lo quieren decir los documentos. – Sajmon

+1

@Sajmon creará un problema cuando uso android: layout_below = "@ + id/start" en lugar de android: layout_below = "@ id/start". ¿O puede crear un problema después de mucho tiempo? – Bora

0

android: id = "@ +/Identificación del my_button"

+ Plus Identificación del cante dice androide para agregar o crear una nueva identificación en Recursos.

androide: layout_below = "@ id/my_button"

que sólo ayuda para referirse al ID ya generada ..

1

A veces hay que usar el signo +. P.ej. cuando se utiliza <include ... /> y el archivo se incluye el siguiente aspecto:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.FloatingActionButton xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    (...) 
    app:layout_anchor="@+id/view_pager" 
    app:layout_anchorGravity="top|right|end" 
/> 

Si no se agrega + en "@+id/view_pager" obtendrá el error mientras que la construcción del proyecto:

Error:(9, 24) No resource found that matches the given name (at 'layout_anchor' with value '@id/view_pager'). 

Se me sucedió a mí en proyecto con bibliotecas.

0

Para acceder a un widget (o componente) en Java o hacer que otros dependan de él, necesitamos un valor único para representarlo. Ese valor único lo proporciona el atributo android: id, que básicamente agrega id proporcionado como un sufijo a @ + id/al archivo de recursos id para que otros lo consulten.Un identificador de barra de herramientas se puede definir como este,

android:id=”@+id/toolbar 

El siguiente Identificación ahora pueden ser rastreados por findViewById (...), que lo busca en la res para presentar identificación, o simplemente directorio R.id y devuelve el tipo de Vista en cuestión. El otro, @id, se comporta de la misma manera que findViewById (...) - busca el componente por el ID proporcionado, pero está reservado solo para diseños. El uso más general de esto es colocar un componente relativo al componente que devuelve.

android:layout_below=”@id/toolbar” 
Cuestiones relacionadas