Bien, esto está empezando a molestarme mucho. Este error aparece de una manera muy especial, no muy lógica.
Permítanme comenzar diciendo que ya he examinado las otras preguntas relacionadas con este error, que también lo busqué en Google. Por lo que puedo decir, la mayoría de los problemas similares ocurren porque las personas se refieren a un String
recurso o algo más que no está dentro del mismo archivo de diseño, pierden el '+' en '@ id +' o algo similar.
El problema que tengo ocurre en un archivo de diseño .xml con extensión RelativeLayout
. Este contiene a TableLayout
, dos LinearLayout
s que contienen algo de texto y finalmente un ProgressBar
. Lo que quiero es que la barra de progreso se alinee con el diseño relativo usando android:layout_alignParentBottom="true"
y luego alinee los dos diseños lineales encima de la barra de progreso (el diseño lineal inferior se alinea sobre la barra de progreso, el otro se alinea sobre el diseño lineal inferior).
Debe ser lo suficientemente simple y parece que funciona, es decir, la vista gráfica muestra el resultado deseado. Sin embargo, y aquí viene el problema , Eclipse me da un error en los dos diseños lineales,
"Error: no se encontró ningún recurso que coincida con el nombre dado (en 'layout_above' con el valor '@ id / LinearLayout_acc')".
y el mismo error para el otro diseño lineal referido a la barra de progreso. He comprobado más del triple que no hay errores tipográficos (la identificación también existe en packagename.R.java), y he intentado limpiar el proyecto una docena de veces.
No recibo el error al guardar (y autoconstruir), no hasta que decido ejecutar el proyecto. Otra cosa extraña es que cuando me refiero al diseño lineal inferior de la barra de progreso en lugar del diseño lineal superior, ¡no obtengo ningún error!
Mi archivo de diseño:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/background_activity" >
<TableLayout
... />
<LinearLayout
android:id="@+id/LinearLayout_dist"
android:layout_above="@id/LinearLayout_acc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginBottom="10dp" >
<TextView
... />
<TextView
... />
</LinearLayout>
<LinearLayout
android:id="@+id/LinearLayout_acc"
android:layout_above="@id/ProgressBar_statusScreen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true" >
<TextView
... />
<TextView
... />
</LinearLayout>
<ProgressBar
android:id="@+id/ProgressBar_statusScreen"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_margin="16dp" />
</RelativeLayout>
¡Por favor ayuda, no tengo idea de qué causa este error!
Editar con respuestas
Shrikant vino con la solución de cambiar el orden de aparición en el archivo de diseño para que los elementos hagan referencia solo a otros elementos ya definidos cuando se lee la referencia.
Además, como otros han publicado, cambiar @id/
a @+id/
, incluso en una referencia, elimina los mensajes de error. Como escribió Marco W. en este hilo, lo que pasa es que debes usar @+id/
la primera vez que se menciona cada id y luego usarla @id/
después, aunque la primera vez no sea una definición.
Hice la mayor parte del diseño y configuré las identificaciones referidas en el editor gráfico de Eclipse, por lo que el código que resultó en un mensaje de error se insertó automáticamente. Quizás esto sea un error en Eclipse.