Przenoszenie i znikanie linii kodu; kłopoty z edytorem XML Eclipse


95

Czasami mój kod porusza się sam lub po prostu znika w edytorze XML Eclipse.

Yikes!

Kiedy podświetlam kod, którego dotyczy problem, podświetlone linie próbują się poprawić. Ale kiedy przewijam lub przeciągam mysz w przeciwnym kierunku, kod znowu się przesuwa. Zasadniczo będę miał powtarzające się, brakujące i przerywane wiersze kodu wyświetlane z pliku wolnego od błędów. Pliki, których to dotyczy , kompilują się i jeśli je zamknę / ponownie otworzę, problem na chwilę zniknie. Jakieś pomysły na to, co się dzieje?


Dodatek: Jeff Axelrod podał link do nowego zgłoszenia błędu w Google.


Brzmi jak problem z grafiką. Jaka jest twoja wersja systemu operacyjnego i Eclipse?
sd

Vista i Eclipse 3.7.2 Rozejrzałem się po witrynie błędów Eclipse, ale bez powodzenia. Może brakuje mi opisowego słowa kluczowego?
Sam

2
Mam ten sam problem. Win7 Pro w wersji 32-bitowej i Eclipse 3.7.2 z systemem Android 17.0.0 ... Ten sam scenariusz, który opisałeś w swojej odpowiedzi. Nie mogę też znaleźć żadnych raportów o błędach.
Pat

Ja też tego doświadczam, doprowadza mnie to do szału ... W moim przypadku, używając Windows XP z eclipse indigo. Problem zdarza się zawsze, gdy przechodzę z układu graficznego do edytora xml
mdelolmo

1
Zgłoszenie błędu Androida zostało złożone tutaj .
Jeff Axelrod,

Odpowiedzi:


32

Ten błąd został (ostatecznie) naprawiony w ADT 21. Poprawka jest teraz dostępna w ADT 21 Preview 9, opublikowana kilka minut temu, tutaj: https://android-review.googlesource.com/#/c/44936/1

Powodem, dla którego otrzymujesz dziwne wizualne artefakty, jest to, że jeśli plik zawiera zepsute zakończenia linii DOS (wiele powrotów karetki bez nowej linii dla każdego powrotu karetki), Eclipse jest bardzo zdezorientowany. To jest problem Eclipse https://bugs.eclipse.org/bugs/show_bug.cgi?id=375421 .

Poprawka składa się z dwóch części: (1) Po pierwsze, poprawiono narzędzie ADT w taki sposób, że nie wprowadza już tych sekwencji \ r \ r do dokumentu. Daje to pewność, że nie otrzymasz nowych dokumentów, które wyzwalają dziwne zachowanie podczas edycji, ale nie naprawia wstecz starszych dokumentów z tymi zakończeniami linii, więc jeśli je otworzysz, nadal otrzymasz dziwne zachowanie podczas edycji.

(2) Po drugie, dostępna jest nowa funkcja sprawdzania kłaczków, która wyszukuje zakończenia przerywanych linii w dokumentach. Działa to przyrostowo, więc jeśli edytujesz plik XML, w którym występuje ten problem, narzędzie ADT doda znacznik błędu dla tego problemu - wraz z szybką poprawką umożliwiającą wykonanie operacji na dokumencie, aby go naprawić.

W skrócie: pobierz ADT 21 Preview 9; uruchom Lint na swoich projektach i poszukaj wszelkich skarg dotyczących plików zawierających przerwane zakończenia linii, a jeśli jakieś znajdzie, zastosuj quickfix. Odtąd dalsze edycje za pomocą edytora układu powinny zapewniać spójne formatowanie plików.

FYI, odpowiednia poprawka jest tutaj: https://android-review.googlesource.com/#/c/44936/

Instrukcje dotyczące łatwej aktualizacji narzędzi SDK i wtyczki Eclipse ADT są dostępne tutaj: http://tools.android.com/preview-channel

- Tor (od zespołu narzędzi Android)


Dzięki za poświęcenie czasu na osobistą odpowiedź, na razie działa świetnie! Dla tych, którzy nie chcą pobierać kodu źródłowego i tworzyć narzędzi lokalnie, po prostu wykonaj te dwa kroki, aby zainstalować gotową wersję. (Przeczytaj Instalowanie wtyczki Eclipse, jeśli zapomniałeś, jak zrobić krok drugi.)
Sam

U mnie działa świetnie. Jestem w Eclipse Juno. Po prostu poszedłem do Pomoc> Zainstaluj nowe oprogramowanie> Co jest już zainstalowane? Potem wybrałem wszystkie rzeczy na Androida od Google, wybrałem Aktualizuj i teraz życie znów jest dobre.
rodrigo-silveira

32

Po kilku testach stwierdziłem, że przyczyną może być opcja „Automatycznie sformatuj XML edytowany przez wizualny edytor układu” (w Preferencjach | Android | Edytorzy).

Podczas moich testów odkryłem, że zmiana właściwości (takiej jak layout_gravity) w trybie projektowania graficznego układu zawsze psuje wizualne wyświetlanie pliku, gdy wracam do trybu XML (tekst), gdy ta opcja jest włączona, ale że nie mam problemu, gdy jest wyłączony.

Jeśli chcesz sformatować XML po powrocie z trybu projektowania układu graficznego, po prostu użyj skrótu Ctrl+ Shift+ F. Nie widziałem też żadnego problemu z użyciem opcji „Formatuj przy zapisie”; nawet gdy używam go w trybie układu graficznego; więc zamiast tego możesz użyć Ctrl+, Sgdy jesteś nadal w trybie układu graficznego, aby zarówno zapisać, jak i sformatować swój XML.

Wypróbowałem inne opcje edytorów, takie jak „Pokaż wskaźnik zakresu” lub „Użyj znaków, aby pokazać zmiany na linijce pionowej”, ale nie zauważyłem żadnej różnicy w zachowaniu przy aktywowaniu lub dezaktywowaniu tych opcji.

Wreszcie, aby poprawić wizualne wyświetlanie pliku, gdy jest uszkodzony; Zauważyłem, że użycie skrótu: Ctrl+ A, Ctrl+ C, Ctrl+ Vjest trochę łatwiejsze niż zamknięcie / ponowne otwarcie pliku. Jest to równoważne wykonaniu polecenia Wybierz wszystko, Kopiuj, Wklej; efektywne kopiowanie całego pliku XML na siebie.


4
Używając ADT w wersji 20120624 ... i Indigo Service Release 2 i SDK Tools Rev 20, oraz z nieaktywną opcją „Automatically format the XML…”, nadal mam linie znikające i zamieniające się w inne linie.
Brian,

1
Spróbuj z Juno. W tej chwili nie mogę już odtworzyć tego błędu w Juno. Jednak Juno ma też inne błędy. Na przykład w pewnym momencie przy otwartych dwóch plikach XML klawisz usuwania działał na niewłaściwym pliku: próba usunięcia jednego znaku z jednego pliku zamiast tego usuwała znak z drugiego. Jednak klawisz Backspace był OK. Będę też musiał zmienić domyślną konfigurację eclipse.ini, ponieważ od czasu do czasu podczas próby uruchomienia pliku EXE na emulatorze pojawia się komunikat o błędzie o braku miejsca na stercie. Czy sprawdziłeś zarówno wersję 32-bitową, jak i 64-bitową?
SylvainL,

Wydaje mi się, że używałem tylko wersji 32-bitowej.
Brian

Jest to najlepsza jak dotąd odpowiedź, ponieważ zmniejsza częstotliwość występowania tego błędu, ale nie eliminuje go, więc pytanie jest nadal otwarte.
Sam

1
Nadal mam ten problem czasami, ale nie w przypadku Edytora graficznego: zamiast tego jest to z plikiem AndroidManifest.xml; które używają innego edytora. Tak jest z najnowszą wersją - Juno, ale muszę przyznać, że ostatnio nie miałem zbyt wiele czasu na pracę nad moją aplikacją na Androida, więc nie jestem tego pewien.
SylvainL

12

Nadal występuje ten błąd w Juno (Eclipse 4.2.0, ADT r20).

Moja poprawka: Idź do Okno -> Preferencje -> Android -> Redaktorzy. Mam zaznaczone opcje „Format XML przy użyciu standardowego XML systemu Android…” i „Użyj ustawień Eclipse do wcięcia…” . To rozwiązało problem.


1
Nie. Po prostu odznacz pole „Formatuj XML, używając standardowego formatu XML systemu Android…”. To naprawi dziwną usterkę XML, ale musisz też żyć zgodnie z konwencją Eclipse.
tom_mai78101

Osobiście wolę konwencję Eclipse; Android jeden nie rozróżnia między nawiasem zamykającym open-tag ( >) i nawiasem zamykającym standalone-tag ( />) w celu określenia, czy poprzedzić spacją (opcja jest ograniczona do obu, czy nie). Wydaje się, że to trywialny problem, ale z jakiegoś powodu uważam to za bardzo irytujące.
JAB

12

EDYCJA: zawiera szybszą metodę, więc została przeniesiona na górę:

Ctrl+ F -> wypełnij w ten sposób:

  1. „Znajdź”          „\ r \ r \ n”
  2. „Zastąp”    „\ r \ n”
  3. Przełącz „Wyrażenie regularne” na
  4. Hit „Zastąp wszystkie” przycisk
  5. Ctrl+A
  6. odznacz tekst.
  7. bądź szczęśliwy =)

Oryginał był tutaj: po prostu nie ukrywaj tego problemu, jeśli możesz go naprawić. Czasami nawet zamknięcie pliku XML nie pomagało.

Aby to naprawić, spójrzmy na przyczynę. Przede wszystkim Włącz „Pokaż znaki odstępu” ( Okno> Preferencje> Ogólne> Edytory> Edytory tekstu> Pokaż białe znaki )

Następnie wróć do pliku XML.

wprowadź opis obrazu tutaj

Na przeskalowanym obrazie możesz zobaczyć różnicę kolorów symboli "\ n";

następnie po prostu umieść kursor na tym symbolu, który jest bardziej ciemny.
wprowadź opis obrazu tutaj

spójrz, wybrano dwie linie 0o ... to może być powód!

więc po prostu usuń go i naciśnij przycisk „Enter” lub „Return”, aby dodać symbol „\ n”. wprowadź opis obrazu tutaj
Mam nadzieję, że ci to pomoże.


możesz też znaleźć inny symbol końca:
wprowadź opis obrazu tutaj


Po prostu go usuń, a Twój XML będzie wyglądał świetnie!

PS przepraszam za hiperłącza, jestem nowicjuszem i na SO nie mogę przesłać obrazu ani więcej niż 2 linki. więc mam nadzieję, że zrozumiesz bez dodatkowych zdjęć;)

PPS Dzięki dla gościa, który zagłosował, teraz mogę dostarczyć to ze zdjęciami.


Wielkie dzięki. Nie udało mi się uruchomić komentarza z największą liczbą głosów, ale ten działał świetnie.
publiczna statyczna nieważność

4

Miałem tę samą trudność iw końcu znalazłem rozwiązanie: kliknij prawym przyciskiem myszy w edytorze, wybierz Source/Cleanup Document.


0

Miałem ten sam problem. Rozwiązaniem były następujące kroki. Link sugeruje, że to działa dla innych.

  1. Idź do Preferencje -> klucze
  2. Usuń wiązanie, kopiowanie, wklejanie i wycinanie (naciśnij „zastosuj”, a następnie „ok”)
  3. powtórz krok 1
  4. Przywróć niezwiązane polecenia z kroku 2 (nie przywróciłem cięcia, ale jestem pewien, że wszystko będzie dobrze)

Zauważ, że istnieją 2 wiązania dla każdego z 3 poleceń

  1. Usuń powiązanie dodatkowej funkcji zarówno dla kopiowania, jak i wklejania (pozostaw powiązanie ctl + c / ctl + v [kopiuj / wklej])

W tym momencie powinieneś mieć tylko 2 wiązania ustawione do wykonywania kopiowania / wklejania (tj. Ctl + c / ctl + v)

  1. Kliknij Zastosuj -> OK

To rozwiązanie zostało znalezione tutaj .


0

Kiedy ten błąd pojawia się w nowych wersjach ADT (które są obowiązkowe do naprawy i nie powinny pojawiać się często), po prostu użyj narzędzia Lint, aby go naprawić.

Znajdź go w ostrzeżeniach Lint i kliknij żółtą ikonę żarówki w prawym górnym rogu tej listy ostrzeżeń Lint.

Mam nadzieję, że to komuś pomoże

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.