¿Cuál es la diferencia betwenn @ id / and @ + id / in android?

Posible duplicado:
¿Qué es diferente entre @ + id / android: list y @ id / android: list?

¿Cuál es la diferencia entre @id/.. and @+id/.. ? No me estoy refiriendo a la diferencia entre @android:id/.. y @id/..

Ejemplo de código:

 

¿Cuál es la diferencia entre las dos definiciones de id anteriores?

Debe usar la notación @+ en la primera aparición de la ID dentro de un archivo XML. La segunda y posteriores veces puede, y debe, dejar el signo + . Esto ayudará a detectar errores tipográficos.

Por ejemplo, supongamos que tiene un RelativeLayout . Tienes un TextView en RelativeLayout cuyo android:id es @+id/label . Más adelante en el archivo XML de diseño, desea hacer referencia a ese TextView de otro para fines de posicionamiento (por ejemplo, para android:layout_below ).

Si escribió en android:layout_below="@+id/labbel" (tenga en cuenta el error tipográfico), en tiempo de comstackción, esto se considerará correcto. Sin embargo, en tiempo de ejecución, las cosas no funcionarán, desde el widget que se está colocando de forma incorrecta hasta un locking total, según la versión de Android.

Si escribió en android:layout_below="@id/labbel" (tenga en cuenta el error tipográfico y el signo + falta), entonces obtendrá un error de comstackción.


ACTUALIZAR

Como no estaba lo suficientemente claro la primera vez, al parecer, intentémoslo de nuevo.

        

Arriba, verá un RelativeLayout . Notará que las primeras apariciones de cada ID obtienen el signo + . La segunda y siguientes apariciones de cada ID no obtienen el signo + .

Podrías usar el signo + en todos ellos, pero si haces un error tipográfico, el comstackdor no detectará el problema.

El signo + indica efectivamente “asignar una nueva ID”. No tener los estados de signo + “usar un ID asignado previamente, o fallar en el tiempo de comstackción si no hay tal ID”.

En los archivos fuente XML de recursos de diseño de Android:

"@+id/anyId" : para agregar una nueva identificación

"@id/anyId" : para referir el ID existente

Deberías usar "@id/anyId" solo cuando “anyId” ya esté agregado a la clase R.java usando "@+id/anyId"

De la guía de Android

Para el valor de ID, generalmente debería usar esta forma de syntax: “@ + id / name”. El símbolo más, +, indica que este es un nuevo ID de recurso y la herramienta aapt creará un nuevo entero de recurso en la clase R.java, si no existe aún.

Así que + es para asignar una nueva identificación, también funcionará cuando se usa una ID existente, pero no es necesaria allí.

El segundo:

  

define una nueva identificación. Utilizarías el primero, cuando quieras hacer referencia al elemento de diseño. Por ejemplo, en un diseño relativo:

 android:layout_below="@id/remove_button"