Ok, quindi questo inizia a infastidirmi davvero. Questo errore si presenta in un modo molto speciale, non molto logico.
Vorrei iniziare dicendo che ho già esaminato le altre domande su questo errore, anche su Google. Per quanto posso dire, problemi più simili si verificano perché la gente si riferisce a una Stringrisorsa o qualcos'altro non all'interno dello stesso file di layout, che smarrire il '+' a '@ id +' o qualcosa di simile.
Il problema che sto riscontrando si verifica in un file .xml di layout con estensione RelativeLayout. Questo contiene una TableLayout, due LinearLayouts contenenti un testo e, infine, un ProgressBar. Quello che voglio è che la barra di avanzamento sia allineata con il layout relativo utilizzando android:layout_alignParentBottom="true"e quindi allineare i due layout lineari sopra la barra di avanzamento (il layout lineare inferiore allineato sopra la barra di avanzamento, l'altro allineato sopra il layout lineare inferiore).
Dovrebbe essere abbastanza semplice e sembra che funzioni, ovvero la visualizzazione grafica mostra il risultato desiderato. Tuttavia, e qui arriva il problema , Eclipse mi dà un errore sui due layout lineari,
"Errore: nessuna risorsa trovata che corrisponde al nome specificato (in" layout_above "con valore" @ id / LinearLayout_acc ")."
e lo stesso errore per l'altro layout lineare riferito alla barra di avanzamento. Ho controllato più di tre volte che non ci siano errori di battitura (gli ID esistono anche in packagename.R.java), e ho provato a pulire il progetto una dozzina di volte.
Non ricevo l'errore durante il salvataggio (e la creazione automatica), non finché non decido di eseguire il progetto. Un'altra cosa strana è che quando mi riferisco al layout lineare inferiore dalla barra di avanzamento anziché al layout lineare superiore, non ottengo alcun errore!
Il mio file di layout:
<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>
Per favore aiuto, non ho idea di cosa causi questo errore!
Modifica con le risposte
Shrikant è arrivato con la soluzione di cambiare l'ordine di apparizione nel file di layout in modo che gli elementi facciano riferimento solo ad altri elementi già definiti quando il riferimento viene letto.
Inoltre, come altri hanno pubblicato, il passaggio @id/a @+id/, anche in un riferimento, rimuove i messaggi di errore. Come ha scritto Marco W. in questo thread, il fatto è che devi usare @+id/la prima volta che ogni id viene menzionato e poi usarlo in @id/seguito, anche se la prima volta potrebbe non essere una definizione.
Ho realizzato la maggior parte del design e impostato gli ID di riferimento nell'editor grafico di Eclipse, quindi il codice che ha generato un messaggio di errore è stato inserito automaticamente. Forse questo è un bug in Eclipse.