494 Stimmen

Unterschied zwischen "@id/" und "@+id/" in Android

Was ist der Unterschied zwischen dem @id/ y @+id/ ?

Unter @+id/ das Pluszeichen + weist an, einen neuen Ressourcennamen zu erstellen und in die R.java Datei, aber was ist mit @id/ ? Aus der Dokumentation von ID : beim Verweis auf eine Android-Ressource ID brauchen Sie das Plus-Symbol nicht, sondern müssen den Namespace des Android-Pakets hinzufügen, etwa so:

android:id="@android:id/list"

In der folgenden Abbildung schlägt Eclipse jedoch keine Art von @android:id/ .

Image showing the suggestion for the @/id and @+/id

Sind @id/ y @android:id/ dasselbe?

372voto

Aman Alam Punkte 11141

Sie beziehen sich auf Android resources , die bereits im Android-System definiert sind, mit @android:id/.. während Sie für den Zugriff auf Ressourcen, die Sie in Ihrem Projekt definiert/erstellt haben, die @id/..

Mehr Infos

Wie Sie im Chat klarstellten, sagten Sie, Sie hätten ein solches Problem:

Wenn wir die android:id="@id/layout_item_id" es funktioniert nicht. Stattdessen @+id/ funktioniert, wo liegt also der Unterschied? Und das war meine ursprüngliche Frage.

Nun, es hängt vom Kontext ab, wenn Sie das XML-Attribut von android:id angeben, dann geben Sie eine neue ID an und weisen den Parser (oder nennen Sie ihn den Builder) an, einen neuen Eintrag in R.java Daher müssen Sie eine + Zeichen.

Während im anderen Fall, wie android:layout_below="@id/myTextView" beziehen Sie sich auf eine bereits erstellte ID, so dass der Parser diese mit der bereits erstellten ID in R.java .

Wieder mehr Infos

Wie Sie in Ihrem Chat sagten, beachten Sie, dass android:layout_below="@id/myTextView" erkennt ein Element mit id nicht myTextView wenn sie nach dem Element, in dem sie verwendet wird, geschrieben wird.

91voto

Nathan Schwermann Punkte 30844

Das +-Zeichen ist eine Abkürzung, mit der Sie die ID zu Ihrer Liste der Ressourcen-IDs hinzufügen können. Andernfalls müssen Sie sie in einer Xml-Datei wie dieser haben

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item name="my_logo" type="id"/>
</resources>

49voto

Zar E Ahmer Punkte 32557

Kurz und bündig

android:id="@+id/my_button"

Das Pluszeichen +id weist Android an, eine neue ID in den Ressourcen hinzuzufügen oder zu erstellen.

während

android:layout_below="@id/my_button"

es hilft nur, die bereits erzeugte Id. zu beziehen.

12voto

Fortran Punkte 1702

Das ist ganz einfach:

"@+..." - neu erstellen

"@..." - Link auf bestehende

Quelle: https://developer.Android.com/guide/topics/resources/layout-resource.html#idvalue

9voto

Nguyen Punkte 91

Das Pluszeichen ( + ) vor dem Ressourcentyp wird nur benötigt, wenn Sie zum ersten Mal eine Ressourcen-ID definieren. Wenn Sie die Anwendung kompilieren, verwenden die SDK-Tools den ID-Namen, um eine neue Ressourcenkennung in Ihrem Projekt zu erstellen. R.java Datei, die sich auf die EditText Element. Wenn die Ressourcenkennung einmal auf diese Weise deklariert wurde, benötigen andere Verweise auf die Kennung kein Pluszeichen. Die Verwendung des Pluszeichens ist nur bei der Angabe einer neuen Ressourcenkennung erforderlich und wird für konkrete Ressourcen wie Strings oder Layouts nicht benötigt. In der Sidebox finden Sie weitere Informationen über Ressourcenobjekte.

De: https://developer.Android.com/training/basics/firstapp/building-ui.html

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X