2015-07-27 10 views
5

Wenn ich hinzufügen Android: ID/Hintergrund, um den Namespace, beschwert sich Lint, dass es "nicht Symbol" obwohl ich bin Aufforderung, es hinzuzufügen, anstatt es anzurufen. Der Code funktioniert wie beschrieben, aber der Fehler bleibt bestehen. Wenn ich <item android:id="@+android:id/background" to <item android:id="@+id/background" ändere, hört die Anwendung auf zu arbeiten (ein anderer Anruf bricht). Meine Frage ist: Warum erkennt Lint nicht, dass ich android: id/background zum Namespace hinzufüge, obwohl ein Aufruf dazu gut funktioniert? Gibt es eine bessere Möglichkeit, diesem Item eine ID zu geben, die keinen Lint-Fehler enthält?"Kann Symbol nicht lösen" Fehler bei der Verwendung von Android: ID = "@ + Android: ID/My_ID"

Alle drei der Namespace-Definitionen für die Elemente in der Schicht-Liste werfen unter einen Fussel Fehler:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+android:id/background" 
     android:drawable="@drawable/custom_ratingbar_empty" /> 
    <item android:id="@+android:id/secondaryProgress" 
     android:drawable="@drawable/custom_ratingbar_empty" /> 
    <item android:id="@+android:id/progress" 
     android:drawable="@drawable/custom_ratingbar_filled" /> 
</layer-list> 

ich this gefunden und versucht, Build- läuft> sauber wie ohne Erfolg vorgeschlagen.

+0

Was ist '@ + android: id' angeblich erreichen? '@ +' ist das Hinzufügen einer zuvor nicht definierten ID. Versuchen Sie, eine ID im vordefinierten Android-Namespace hinzuzufügen (das wird nicht funktionieren)? – dhke

Antwort

11

Wenn Sie eine eigene ID erstellen:

"@+id/your_new_id" 

, wenn Sie Ihre bereits erstellt ID zugreifen

"@id/your_old_id" 

wenn Sie versuchen, Android-System erstellt ID für den Zugriff auf

"@android:id/system_id" 

Sie können den Unterschied sehen, wenn Sie Ihre eigene ID erstellen, dann müssen Siehinzufügen. Da Sie auf System-ID zugreifen, müssen Sie nicht hinzufügen +

+0

Danke für die Klarstellung. –

0

Versuchen Sie @ + Android: ID durch @ + ID zu ersetzen und sehen, ob es funktioniert!

2

Es scheint, dass Sie eine zusätzliche + verwenden.

Sie sollten es entfernen, ersetzen Sie wie folgt @+android:id/background zu @android:id/background.

+0

Danke, das funktioniert. Ich denke, ich musste diese ID einfach anrufen und sie wurde dem Namensraum hinzugefügt. Würden Sie jemals @ + Android: ID/Hintergrund verwenden? Danke für die Hilfe. –