web-dev-qa-db-fra.com

Android erreur xml: "Aucune ressource trouvée ne correspond au nom donné" avec RelativeLayout (@ id / LinearLayout_acc, @ id / ProgressBar_statusScreen)

Bon, ça commence à vraiment m'agacer. Cette erreur apparaît d'une manière très spéciale, pas très logique.

Permettez-moi de commencer par dire que j'ai déjà examiné les autres questions concernant cette erreur, Google aussi. Autant que je sache, la plupart des problèmes similaires se produisent parce que les gens font référence à une ressource String ou à quelque chose d'autre qui ne se trouve pas dans le même fichier de mise en page. Ils perdent le '+' dans '@ id +' ou quelque chose de similaire.

Le problème que je rencontre se produit dans un fichier .xml de mise en page avec un RelativeLayout. Cela contient un TableLayout, deux LinearLayouts contenant du texte et enfin un ProgressBar. Ce que je veux, c'est que la barre de progression soit alignée sur la disposition relative à l'aide de Android:layout_alignParentBottom="true" puis alignez les deux présentations linéaires au-dessus de la barre de progression (la disposition linéaire inférieure s’alignant au-dessus de la barre de progression, l’autre étant alignée au-dessus de la disposition linéaire inférieure).

Il devrait être assez simple et donner l’impression que cela fonctionne, c’est-à-dire que la vue graphique montre le résultat souhaité. Cependant, et voici le problème , Eclipse me donne une erreur sur les deux schémas linéaires,

"Erreur: Aucune ressource trouvée qui correspond au nom donné (dans" layout_above "avec la valeur" @ id/LinearLayout_acc ")."

et la même erreur pour l'autre mise en page linéaire en référence à la barre de progression. J'ai plus que triple vérifié qu'il n'y avait pas de fautes de frappe (les id existent aussi dans packagename.R.Java), et j'ai essayé de nettoyer le projet une douzaine de fois.

Je ne reçois pas l'erreur lors de l'enregistrement (et de la construction automatique), pas avant d'avoir décidé d'exécuter le projet. Une autre chose étrange est que lorsque je me réfère à la présentation linéaire inférieure depuis la barre de progression au lieu de la présentation 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>

S'il vous plaît aider, je n'ai aucune idée de ce qui cause cette erreur!

Modifier avec des réponses

Shrikant est venu avec la solution de changer l'ordre d'apparition dans le fichier de disposition afin que les éléments ne référencent que les autres éléments déjà définis lors de la lecture de la référence.
En outre, comme d’autres l’ont signalé, @id/ à @+id/, même dans une référence, supprime les messages d'erreur. Comme Marco W. l'a écrit dans le fil this , le problème est que vous devez utiliser @+id/ la première fois que chaque identifiant est mentionné, puis utilisez @id/ après, même si la première fois peut ne pas être une définition.

J'ai réalisé l'essentiel de la conception et défini les identifiants référencés dans l'éditeur graphique d'Eclipse. Le code ayant entraîné un message d'erreur a donc été automatiquement inséré. Peut-être que c'est un bug dans Eclipse.

91
stemadsen

S'il vous plaît vérifier le code ci-dessous

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:background="@drawable/ic_launcher" >

<TableLayout
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content" />

<LinearLayout
    Android:id="@+id/LinearLayout_dist"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_above="@+id/LinearLayout_acc"
    Android:layout_centerHorizontal="true"
    Android:layout_marginBottom="10dp" >

    <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="FIRST" />

    <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="SECOND" />
   </LinearLayout>

   <LinearLayout
    Android:id="@+id/LinearLayout_acc"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_above="@+id/ProgressBar_statusScreen"
    Android:layout_centerHorizontal="true" >

    <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="THIRD" />

    <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="FOURTH" />
   </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>

Vérifiez également les éléments suivants lien . Il est indiqué qu'Android: layout_below = "@ id/myTextView" ne reconnaîtra pas un élément portant l'id "myTextView" s'il est écrit après l'élément que vous utilisez.

77
Shrikant

changement

@id/LinearLayout_acc

à

@+id/LinearLayout_acc
84
jeet

Changer chaque identifiant @id à @+id, peu importe le moment où il définit ou référence un identifiant. Avec cela, vous n'obtiendrez pas

Erreur xml Android: "Aucune ressource ne correspond au nom indiqué" avec RelativeLayout (@ id/LinearLayout_acc, @ id/ProgressBar_statusScreen).

15
AkashG
 <LinearLayout
        Android:id="@+id/LinearLayout_dist"
        Android:layout_above="@+id/LinearLayout_acc" <--- here might be a problem you forgot + sign
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_centerHorizontal="true"
        Android:layout_marginBottom="10dp" >
2
Hardik Nadiyapara