Kann ich dieselbe ID in einem anderen Layout in Android verwenden?

Lesezeit: 4 Minuten

Benutzer-Avatar
happyhardik

Ich bin neu in der Android-Entwicklung. Ist es in Ordnung, die gleiche ID für Bilder zu verwenden und TextViews an verschiedenen Layout XML-Dateien?

Wenn Eclipse sie automatisch für mich auflistet, listet es alle Layoutvariablen aus dem Projekt auf, also wird es kollidieren? Bis jetzt habe ich keine Probleme bei der Verwendung der gleichen ID in verschiedenen Layouts bemerkt, aber auf lange Sicht mache ich mir Sorgen.

  • Verwandter Beitrag – zwei Aufrufe mit derselben ID

    – RBT

    19. August 2018 um 9:04 Uhr

  • @Pavel Sie benötigen weiterhin IDs, um Einschränkungen anzupassen.

    – Sadda Hussain

    15. Juli 2019 um 12:15 Uhr

Kurze Antwort: Ja, das können Sie.

Lange Antwort: Sie können dies tun, denn immer wenn Sie findViewById() verwenden, um einen Verweis auf einen Teil Ihres Layouts zu erhalten, sucht die Methode nur nach dieser Ansicht im aktuell aufgeblasenen Layout. Selbst wenn Sie also eine andere Ansicht mit derselben ID in einem anderen Layout haben, wird Android dort nicht danach suchen.

  • Können Sie eine noch längere Antwort geben? Da R.id.layout_id eine statische Ganzzahl ist und zur Kompilierzeit vorbestimmt wird, kennt findViewById() das aktuell aufgeblasene Layout nicht.

    – Chloe

    9. September 2013 um 16:06 Uhr

  • Für alle anderen, die auf diese Frage stoßen, wollte ich Chloes Anfrage beantworten. Die ID wäre für jede Ansicht dieselbe, wird aber niemals zweimal in derselben Aktivität angezeigt. Stellen Sie sich als Metapher vor, was passieren würde, wenn ich Ihnen einen Stapel Papiere geben würde, alle mit einem Haufen Zahlen darauf. Auf mehreren dieser Blätter steht die Zahl 4. Sie sehen sich eines der Blätter an, und ich bitte Sie, die 4 einzukreisen. Das ist einfach. Jetzt sehen Sie sich ein anderes Blatt mit einer 4 darauf an. Sie können das auch finden und einkreisen. Es spielt keine Rolle, dass die Nummer im Voraus festgelegt wird.

    – Ted Cannelongo

    10. Juli 2014 um 0:31 Uhr


  • Ich stimme Teds Kommentar nicht zu, Sie können gleichzeitig zwei Komponenten mit derselben ID auf derselben Aktivität ausführen. Ich hatte gerade das Problem bei einer App, ich habe zwei verschiedene ViewPager gleichzeitig in der Hauptaktivität verwendet. Als ich versuchte, den aktuell angezeigten ViewPager mit der ID abzurufen, wurde tatsächlich der andere abgerufen, der im Hintergrund ausgeführt wurde. Ich habe das Problem behoben, indem ich einfach die beiden IDs eindeutig gemacht habe.

    – Yoann Hercouet

    4. Februar 2016 um 17:01 Uhr

  • @YoannHercouet Ich glaube, das liegt daran, dass beide auf demselben Blatt waren (Aktivität)

    – Naheel

    7. Juli 2016 um 18:38 Uhr

Benutzer-Avatar
Chupamobiler Evangelist

Es wird empfohlen, unterschiedliche IDs für unterschiedliche Layouts zu verwenden. Auf lange Sicht, wenn Sie viele Layouts und damit viele IDs haben, wird es sehr kompliziert, sie zu unterscheiden.

Normalerweise nenne ich meine IDs so: layoutName_elementId.

Es funktioniert für mich, die ID, nach der ich suche, leicht zu finden, insbesondere wenn ich die automatische Vervollständigung verwende (ich weiß, an welchem ​​​​Layout ich arbeite, aber ich kenne die ID nicht wirklich; in diesem Fall mit meiner Benennungsstrategie, ich Geben Sie nur den Layoutnamen ein und es werden alle IDs dieses Layouts angezeigt).

Weitere Informationen zu Layouts und IDs finden Sie hier hier.

Viel Spaß beim Codieren,

  • Was ist das Problem bei der Suche, sagen wir mal ok_button bei jeder Ihrer Aktivitäten ? Die automatische Vervollständigung ist auf diese Weise noch klarer, wenn Sie wissen, nach welchem ​​​​Chat Sie suchen.

    – Dan Chaltiel

    16. Oktober 2015 um 23:36 Uhr

Laut Entwickler-API-Leitfäden:

Eine ID muss nicht im gesamten Baum eindeutig sein, aber sie sollte innerhalb des Teils des Baums, den Sie durchsuchen, eindeutig sein (was häufig der gesamte Baum sein kann, daher ist es am besten, wenn möglich, vollständig eindeutig zu sein).

Die kurze Antwort ist also, dass es nicht obligatorisch ist, aber es ist eine gute Praxis, um mögliche Konflikte zu vermeiden.

  • Ich habe einmal versehentlich dieselben IDs erstellt. Das Aufheben der Umbenennung war später eine Menge Arbeit, da alle Instanzen umbenannt wurden. Das bedeutet, sobald Sie einen ID-Konflikt haben, sind Sie am Arsch. Es wird sehr schwierig sein, alles wieder zu trennen.

    – t3chb0t

    21. Juni 2020 um 10:53 Uhr


  • @t3chb0t Echt! Auch wenn Sie „nur lokal“ aktivieren, benennt Android Studio alle Instanzen um. Es ist absolut lächerlich.

    – John Glen

    4. Oktober 2020 um 22:29 Uhr

Benutzer-Avatar
Paul Poley

Nicht empfohlen, da Sie in Zukunft die view idAndroid Studio wird es in allem umgestalten XML Dateien und Klassen und Sie werden in Schwierigkeiten geraten.

Aber es gibt auch Fälle, in denen Sie dasselbe verwenden müssen id zum Beispiel, wenn Sie eine Zusammenfassung haben und mehrere Layouts wiederverwenden.

Falls Sie mehrere haben views mit gleich id's in Ihrem Projekt und Sie müssen umgestalten, tun Sie es manuell, verwenden Sie keine eingebaute IDE-Funktion, ändern Sie die id in der Zielansicht innen XML Layout beheben Sie dann den roten Fehler im Layout.

Aktualisieren:

Derzeit unterstützt Android Studio die Umgestaltung mit der Option „Nur in der aktuellen Datei umgestalten“.

Update: ViewBinding

Sie können eine Casting-Ausnahme erhalten, wenn Sie verschachtelte Layouts (Tag einschließen) mit Ansichts-IDs haben, die mit IDs in seiner Hierarchie kollidieren.

1315840cookie-checkKann ich dieselbe ID in einem anderen Layout in Android verwenden?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy