Verschieben und Verschwinden von Codezeilen; Probleme mit dem XML-Editor von Eclipse


95

Manchmal bewegt sich mein Code von selbst oder verschwindet einfach im Eclipse XML-Editor.

Huch!

Wenn ich den betroffenen Code hervorhole, versuchen die hervorgehobenen Zeilen, sich selbst zu korrigieren. Aber wenn ich mit der Maus in die entgegengesetzte Richtung scrolle oder ziehe, verschiebt sich der Code erneut. Im Wesentlichen werden sich wiederholende, fehlende und unterbrochene Codezeilen aus einer ansonsten fehlerfreien Datei angezeigt. Die Dateien betroffen tun Kompilierung und wenn ich in der Nähe / Wieder öffnen sie dieses Problem weggeht, für den Moment. Irgendwelche Ideen, was passiert?


Ergänzung: Jeff Axelrod hat einen Link zu einem neuen Fehlerbericht bei Google bereitgestellt .


Klingt für mich nach einem Grafikproblem. Was ist Ihr Betriebssystem und Ihre Eclipse-Version?
SD

Vista und Eclipse 3.7.2 Ich habe mich auf der Eclipse-Bug-Site umgesehen, aber kein Glück. Vielleicht fehlt mir ein beschreibendes Schlüsselwort?
Sam

2
Ich habe das gleiche Problem. Win7 Pro 32-Bit und Eclipse 3.7.2 mit Android 17.0.0 ... Das gleiche Szenario, das Sie in Ihrer Antwort beschrieben haben. Ich kann auch keine Fehlerberichte finden.
Pat

Ich erlebe das auch, es macht mich verrückt ... In meinem Fall mit Windows XP mit Eclipse Indigo. Das Problem tritt immer dann auf,
wenn

1
Android-Fehlerbericht hier abgelegt .
Jeff Axelrod

Antworten:


32

Dieser Fehler wurde (endlich) in ADT 21 behoben. Der Fix ist jetzt in ADT 21 Preview 9 verfügbar, das vor einigen Minuten hier veröffentlicht wurde: https://android-review.googlesource.com/#/c/44936/1

Der Grund, warum Sie seltsame visuelle Artefakte erhalten, ist, dass Eclipse sehr verwirrt ist, wenn eine Datei fehlerhafte DOS-Zeilenenden enthält (mehrere Zeilenumbrüche ohne Zeilenumbruch für jeden Zeilenumbruch). Das ist das Eclipse-Problem https://bugs.eclipse.org/bugs/show_bug.cgi?id=375421 .

Das Update besteht aus zwei Teilen: (1) Erstens wurde ADT so korrigiert, dass diese \ r \ r-Sequenzen nicht mehr in das Dokument eingefügt werden. Dies stellt sicher, dass Sie keine neuen Dokumente erhalten, was das seltsame Bearbeitungsverhalten auslöst, ältere Dokumente mit diesen Zeilenenden jedoch nicht rückwirkend repariert werden. Wenn Sie sie also öffnen, erhalten Sie immer noch ein seltsames Bearbeitungsverhalten.

(2) Zweitens gibt es eine neue Flusenprüfung, die nach unterbrochenen Linienenden in Dokumenten sucht. Dies wird inkrementell ausgeführt. Wenn Sie also eine XML-Datei mit diesem Problem bearbeiten, fügt ADT eine Fehlermarkierung für dieses Problem hinzu - zusammen mit einem Quickfix, mit dem das Dokument operiert werden kann, um es zu beheben.

Kurz gesagt: Holen Sie sich ADT 21 Preview 9; Führen Sie Lint für Ihre Projekte aus und suchen Sie nach Beschwerden über Dateien mit unterbrochenen Zeilenenden. Wenn dies der Fall ist, wenden Sie den Quickfix an. Von nun an sollten weitere Änderungen mit dem Layout-Editor die Dateien konsistent formatieren.

Zu Ihrer Information, der relevante Fix ist hier: https://android-review.googlesource.com/#/c/44936/

Anweisungen zum einfachen Aktualisieren der SDK-Tools und des Eclipse ADT-Plugins finden Sie hier: http://tools.android.com/preview-channel

- Tor (vom Android Tools Team)


Vielen Dank, dass Sie sich die Zeit genommen haben, persönlich zu antworten. Bisher funktioniert es hervorragend! Für diejenigen, die den Quellcode nicht herunterladen und die Tools lokal erstellen möchten, befolgen Sie einfach diese beiden Schritte , um eine vorgefertigte Version zu installieren. (Lesen Sie die Installation des Eclipse-Plugins, wenn Sie vergessen haben, wie Schritt zwei ausgeführt wird.)
Sam

Funktioniert super für mich. Ich bin in Eclipse Juno. Gehen Sie einfach zu Hilfe> Neue Software installieren> Was ist bereits installiert? Dann habe ich alle Android-Inhalte von Google ausgewählt, Update ausgewählt und jetzt ist das Leben wieder gut.
Rodrigo-Silveira

32

Nach einigen Tests habe ich festgestellt, dass die Option "Vom visuellen Layout-Editor bearbeitetes XML automatisch formatieren" (in Einstellungen | Android | Editoren) hier möglicherweise die Ursache ist.

Bei meinen Tests habe ich festgestellt, dass das Ändern einer Eigenschaft (z. B. layout_gravity) im Grafiklayout-Entwurfsmodus die visuelle Anzeige der Datei immer beeinträchtigt, wenn ich in den XML-Modus (Textmodus) zurückkehre, wenn diese Option aktiviert ist dass ich kein Problem habe, wenn es aus ist.

Wenn Sie das XML nach Ihrer Rückkehr aus dem Entwurfsmodus für das grafische Layout formatieren möchten, verwenden Sie einfach die Verknüpfung Ctrl+ Shift+ F. Außerdem habe ich kein Problem mit der Option "Beim Speichern formatieren" festgestellt. selbst wenn ich es im grafischen Layoutmodus verwende; Sie können also stattdessen Ctrl+ Sverwenden, während Sie sich noch im grafischen Layoutmodus befinden, um Ihr XML zu speichern und zu formatieren.

Ich habe andere Editoroptionen wie "Bereichsanzeige anzeigen" oder "Zeichen zum Anzeigen von Änderungen im vertikalen Lineal verwenden" ausprobiert, aber beim Aktivieren oder Deaktivieren dieser Optionen konnte ich keinen Unterschied im Verhalten feststellen.

Schließlich, um die visuelle Anzeige der Datei zu korrigieren, wenn sie beschädigt ist; Ich fand, dass die Verwendung der Verknüpfung: Ctrl+ A, Ctrl+ C, Ctrl+ Vetwas einfacher ist als das Schließen / erneute Öffnen der Datei. Dies entspricht dem Auswählen, Kopieren und Einfügen. Kopieren Sie effektiv die gesamte XML-Datei über sich selbst.


4
Wenn Sie ADT Version 20120624 ... und Indigo Service Release 2 und SDK Tools Rev 20 verwenden und "XML automatisch formatieren ..." nicht aktiviert ist, verschwinden immer noch Zeilen und werden zu anderen Zeilen.
Brian

1
Versuchen Sie es mit Juno. Derzeit kann ich diesen Fehler mit Juno nicht mehr reproduzieren. Es gibt jedoch auch andere Fehler bei Juno. Wenn beispielsweise zwei XML-Dateien geöffnet waren, wirkte der Löschschlüssel auf die falsche Datei: Beim Versuch, ein Zeichen in einer Datei zu löschen, wurde stattdessen ein Zeichen in der anderen Datei gelöscht. Die Rücktaste war jedoch in Ordnung. Ich muss auch die Standardkonfiguration von eclipse.ini ändern, da ich von Zeit zu Zeit eine Fehlermeldung über einen Mangel an Heapspeicher bekomme, wenn ich versuche, die EXE-Datei auf dem Emulator auszuführen. Haben Sie nach 32-Bit- und 64-Bit-Versionen gesucht?
SylvainL

Ich glaube, ich habe nur die 32-Bit-Version verwendet.
Brian

Dies ist die bisher beste Antwort, da sie die Häufigkeit dieses Fehlers verringert, ihn jedoch nicht beseitigt, sodass die Frage noch offen ist.
Sam

1
Ich habe dieses Problem manchmal immer noch, aber nicht mit dem Grafikeditor: Stattdessen mit der Datei AndroidManifest.xml. die einen anderen Editor verwenden. Dies ist mit der neuesten Version - Juno, aber ich muss zugeben, dass ich in letzter Zeit nicht viel Zeit hatte, um an meiner Android-Anwendung zu arbeiten, so dass ich nicht wirklich sicher sagen kann.
SylvainL

12

Dieser Fehler tritt immer noch bei Juno auf (Eclipse 4.2.0, ADT r20).

Mein Fix: Gehen Sie zu Fenster -> Einstellungen -> Android -> Editoren. Ich habe sowohl "XML mit dem Standard-Android-XML formatieren ..." als auch "Eclipse-Einstellungen für Einrückung verwenden ..." aktiviert. Dies löste das Problem für mich.


1
Deaktivieren Sie einfach das Kontrollkästchen "XML mit dem Standard-Android-XML formatieren ...". Es wird den seltsamen XML-Fehler beheben, aber Sie müssen auch mit der Eclipse-Konvention leben.
tom_mai78101

Persönlich bevorzuge ich die Eclipse-Konvention; Das Android-Gerät unterscheidet nicht zwischen einer offenen Klammer ( >) und einer eigenständigen Klammer ( />), um zu bestimmen, ob ein Leerzeichen vorangestellt werden soll (die Option ist auf beide oder keine beschränkt). Scheint ein triviales Problem zu sein, aber aus irgendeinem Grund finde ich es sehr irritierend.
JAB

12

EDIT: Enthält eine schnellere Methode, also wurde sie nach oben gebracht:

Ctrl+ F -> so füllen:

  1. "Finden"          "\ r \ r \ n"
  2. "Ersetzen"    "\ r \ n"
  3. Schalten Sie "Regulärer Ausdruck" auf EIN
  4. Klicken Sie auf die Schaltfläche "Alle ersetzen"
  5. Ctrl+A
  6. Text abwählen.
  7. sei glücklich =)

Das Original war hier: Verstecken Sie dieses Problem nur nicht, wenn Sie es beheben können. Manchmal half es sogar nicht, die XML-Datei zu schließen.

Um das Problem zu beheben, schauen wir uns den Grund dafür an. Aktivieren Sie zunächst " Leerzeichen anzeigen" ( Fenster> Einstellungen> Allgemein> Editoren> Texteditoren> Leerzeichen anzeigen ).

Dann zurück zu deiner XML-Datei.

Geben Sie hier die Bildbeschreibung ein

Im skalierten Bild sehen Sie möglicherweise den Unterschied der "\ n" -Symbolfarben.

Setzen Sie dann einfach den Cursor auf das Symbol, das dunkler ist.
Geben Sie hier die Bildbeschreibung ein

schau, zwei Zeilen wurden ausgewählt 0o ... das kann der Grund sein!

Löschen Sie es einfach und drücken Sie die Eingabetaste oder die Eingabetaste, um das Symbol "\ n" hinzuzufügen. Geben Sie hier die Bildbeschreibung ein
Hoffe es hilft dir.


Sie können auch das andere Symbol der Endlinie finden:
Geben Sie hier die Bildbeschreibung ein


Löschen Sie es einfach auch und Ihr XML wird ein tolles Aussehen haben!

PS Entschuldigung für Hyperlinks, ich bin Neuling und auf SO kann ich kein Bild oder mehr als 2 Links hochladen. also hoffe du bekommst den Punkt ohne zusätzliche Bilder;)

PPS Danke an den Kerl, der abstimmt, jetzt kann ich dies mit Bildern versehen.


Vielen Dank. Ich konnte den am besten bewerteten Kommentar nicht zum Laufen bringen, aber dieser hat großartig funktioniert.
öffentliche statische Leere

4

Ich hatte die gleichen Schwierigkeiten und fand schließlich die Lösung: Klicken Sie mit der rechten Maustaste in den Editor und wählen Sie Source/Cleanup Document.


0

Ich hatte das gleiche Problem. Die folgenden Schritte waren die Lösung. Link schlägt vor, dass es für andere funktioniert.

  1. Gehen Sie zu Einstellungen -> Tasten
  2. Kopieren, Einfügen und Ausschneiden aufheben (auf "Übernehmen" und dann auf "OK" klicken)
  3. Wiederholen Sie Schritt 1
  4. Stellen Sie ungebundene Befehle aus Schritt 2 wieder her (ich habe den Schnitt nicht wiederhergestellt, aber ich bin sicher, dass es Ihnen gut geht)

Beachten Sie, dass für jeden der drei Befehle zwei Bindungen vorhanden sind

  1. Lösen Sie die sekundäre Funktion zum Kopieren und Einfügen (lassen Sie ctl + c / ctl + v [Kopieren / Einfügen] gebunden).

Zu diesem Zeitpunkt sollten nur 2 Bindungen zum Kopieren / Einfügen festgelegt sein (dh ctl + c / ctl + v).

  1. Klicken Sie auf Anwenden -> OK

Diese Lösung wurde hier gefunden .


0

Wenn dieser Fehler bei neuen Versionen von ADT auftritt (die zur Behebung obligatorisch sind und bei denen der Fehler nicht häufig auftreten sollte), verwenden Sie einfach das Lint-Tool, um ihn zu beheben.

Suchen Sie es in den Flusenwarnungen und klicken Sie auf das gelbe Lampensymbol in der oberen rechten Ecke dieser Liste der Flusenwarnungen.

Hoffe es wird jemandem helfen

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.