Ok, ça commence vraiment à m'énerver. Cette erreur apparaît d'une manière très spéciale et pas très logique.
Permettez-moi de commencer par dire que j'ai déjà examiné les autres questions relatives à cette erreur et que j'ai également consulté Google. D'après ce que je peux dire, la plupart des problèmes similaires se produisent parce que les gens se réfèrent à une String
ou quelque chose d'autre qui ne se trouve pas dans le même fichier de mise en page, ils ont mal placé le '+' dans '@id+' ou quelque chose de similaire.
Le problème que j'ai se produit dans un fichier .xml de mise en page avec un fichier de type RelativeLayout
. Celui-ci contient un TableLayout
deux LinearLayout
contenant du texte et enfin un ProgressBar
. Ce que je veux, c'est que la barre de progression soit alignée sur la mise en page relative à l'aide de la fonction android:layout_alignParentBottom="true"
et alignez ensuite les deux présentations linéaires au-dessus de la barre de progression (la présentation linéaire inférieure s'alignant au-dessus de la barre de progression, l'autre s'alignant au-dessus de la présentation linéaire inférieure).
Il doit être assez simple et avoir l'air de fonctionner, c'est-à-dire que la vue graphique montre le résultat souhaité. Cependant, et voilà le problème Eclipse me donne une erreur sur les deux tracés linéaires,
"Erreur : No resource found that matches the given name (at 'layout_above' with value '@id/LinearLayout_acc')."
et la même erreur pour l'autre disposition linéaire concernant la barre de progression. J'ai vérifié plus de trois fois qu'il n'y a pas de fautes de frappe (les identifiants existent également dans packagename.R.java), et j'ai essayé de nettoyer le projet une douzaine de fois.
Je n'obtiens pas l'erreur lors de la sauvegarde (et de la construction automatique), mais seulement lorsque je décide d'exécuter le projet. Une autre chose étrange est que lorsque je me réfère à la disposition linéaire inférieure de la barre de progression au lieu de la disposition linéaire supérieure, je n'obtiens aucune erreur !
Mon fichier de mise en page :
<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>
Aidez-moi, je n'ai aucune idée de la cause de cette erreur !
Modifier avec les réponses
Shrikant a proposé une solution consistant à modifier l'ordre d'apparition dans le fichier de mise en page afin que les éléments ne fassent référence qu'à d'autres éléments déjà définis lorsque la référence est lue.
De plus, comme d'autres l'ont signalé, changer @id/
a @+id/
même dans une référence, ne supprime pas les messages d'erreur. Comme Marco W. l'a écrit dans ce le truc c'est que tu dois utiliser @+id/
la première fois que chaque identifiant est mentionné et ensuite utiliser @id/
après, même si la première fois n'est pas forcément une définition.
J'ai réalisé la majeure partie de la conception et défini les identifiants référencés dans l'éditeur graphique d'Eclipse, de sorte que le code qui entraînait un message d'erreur était automatiquement inséré. Il s'agit peut-être d'un bogue dans Eclipse.