2012-05-23 4 views
12

Ich habe die folgenden in einem relativen Layout.(ID-Referenz nicht gefunden) Keine Ressource entspricht dem angegebenen Namen um

<TextEdit 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@id/buttonA" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_toLeftOf="@id/buttonA" /> 

<Button 
    android:id="@+id/buttonA" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:text="@string/message" > 
</Button> 

Eklipse gibt mir diese Fehler in den Zeilen android: layout_alignBottom = "@ id/buttonA" und android: layout_toLeftOf = "@ id/buttonA" jeweils:

Fehler: Fehler: Keine Ressource gefunden, dass Streichhölzer der angegebene Name (bei 'layout_alignBottom' mit dem Wert '@ id/buttonA').

Fehler: Fehler: Es wurde keine Ressource gefunden, die mit dem angegebenen Namen übereinstimmt (bei 'layout_toLeftOf' mit dem Wert '@ id/buttonA').

Durch Ersetzen von @ id/buttonA durch @ + id/buttonA wird diese Eclipse-Fehlermeldung entfernt. Ist das richtig? Wenn ja, warum sollte das dann funktionieren? Erzeugt @@ id keine neue ID? Ich möchte keine neue ID. Ich möchte den im Button-Objekt referenzierten verwenden. Was ist der beste Weg, damit umzugehen?

Danke Jungs. -Joe

Antwort

31

Verwenden @+id ist der richtige Weg, es zu tun. @+id erstellt eine neue ID, aber nur wenn eine mit diesem Namen noch nicht existiert.

Wenn Sie das nicht tun wollen, würde es für diesen speziellen einfachen Fall ausreichen, die TextEdit unter die Button zu verschieben.

+0

Ja, ich werde nur tun. Vielen Dank. – J50

+2

Ich werde sie tauschen, damit die ID-Referenzen gut aussehen. Vielen Dank. Warum sollte @ + id funktionieren? Ich versuche nicht, eine neue ID-Ressource zu erstellen, sondern referenziere stattdessen eine später definierte. – J50

+0

@ J50: Genau weil es später definiert wird, an dem Punkt, an dem Sie versuchen es zu benutzen, ist es noch nicht definiert. Und deshalb arbeiten wir mit @ + id, weil es die Definition einer solchen ID erzwingt. –

0

Das Layout, das Sie als Referenz verwenden möchten, sollte definiert werden, bevor es als Referenz verwendet wird, z. B. als 'layout_toLeftOf'.

Es ist wie Sie eine Variable in Java deklarieren müssen, bevor Sie es verwenden. Deklarieren Sie dann verwenden Sie es ...