Переміщення та зникнення рядків коду; проблема з XML-редактором Eclipse


95

Іноді мій код рухається самостійно або просто зникає в редакторі Eclipse XML.

Так!

Коли я виділяю зазначений код, виділені рядки намагаються виправити себе. Але коли я прокручую або перетягую мишу у зворотному напрямку, код знову зміщується. По суті, у мене буде повторюваний, відсутній та ламаний рядки коду, які відображатимуться з файлу, що не містить помилок. Файли , порушені зробити компіляції , і якщо я закрити / повторно відкрити їх ця проблема йде, на даний момент. Будь-які ідеї щодо того, що відбувається?


Додаток: Джефф Аксельрод надав посилання на новий звіт про помилки в Google.


Для мене це звучить як проблема графіки. Яка ваша версія ОС та Eclipse?
сд

Vista і Eclipse 3.7.2 Я оглянувся на сайті помилок Eclipse, але не пощастило. Може, мені не вистачає описового ключового слова?
Сем

2
У мене така сама проблема. Win7 Pro 32-bit та Eclipse 3.7.2 з android 17.0.0 ... Той самий сценарій, що описаний у вашій відповіді. Також не вдається знайти звітів про помилки.
Пт

Я теж переживаю це, це зводить мене з розуму ... У моєму випадку використання Windows XP із eclipse indigo. Проблема трапляється завжди, коли я
переходжу

1
Тут подано звіт про помилку Android .
Джефф Аксельрод

Відповіді:


32

Ця помилка (остаточно) виправлена ​​в ADT 21. Виправлення тепер доступне в ADT 21 Preview 9, розміщене кілька хвилин тому, тут: https://android-review.googlesource.com/#/c/44936/1

Причина, через яку ви отримуєте дивні візуальні артефакти, полягає в тому, що якщо файл містить непрацюючі закінчення рядків DOS (багаторазові каретки повертаються без нового рядка для кожного повернення каретки), Eclipse дуже заплутається. Це проблема Eclipse https://bugs.eclipse.org/bugs/show_bug.cgi?id=375421 .

Виправлення має дві частини: (1) По-перше, ADT було виправлено таким чином, що він більше не вводить ці послідовності \ r \ r в документ. Це гарантує, що ви не отримуєте нових документів, що викликає дивну поведінку редагування, але при цьому не фіксує старі документи із цими закінченнями рядків, тому якщо ви їх відкриваєте, ви все одно отримуєте дивну поведінку редагування.

(2) По-друге, є нова перевірка ворсу, яка шукає закінчені рядки в документах. Це виконується поступово, тому, якщо ви редагуєте XML-файл, який має цю проблему, ADT додасть маркер помилки для цієї проблеми - разом із швидким виправленням для виконання операції з документом для її виправлення.

Коротше: Отримайте ADT 21 Preview 9; запустіть Lint на своїх проектах та знайдіть скарги щодо файлів, що містять закінчення рядків, і якщо вони знайдуть такі, застосуйте швидке виправлення. Відтепер подальші редагування за допомогою редактора макетів повинні зберігати файли в послідовному форматі.

FYI, відповідне виправлення знаходиться тут: https://android-review.googlesource.com/#/c/44936/

Інструкції щодо легкого оновлення інструментів SDK та плагіна Eclipse ADT тут: http://tools.android.com/preview-channel

- Tor (від команди інструментів Android)


Дякуємо, що знайшли час відповісти особисто, поки що це чудово працює! Для тих, хто не хоче завантажувати вихідний код та створювати інструменти локально, просто виконайте ці два кроки, щоб встановити попередньо складену версію. (Прочитайте Встановлення плагіна Eclipse, якщо ви забули, як зробити крок другий.)
Сем

Для мене чудово працює. Я в Eclipse Juno. Просто перейдіть до Довідка> Встановити нове програмне забезпечення> Що вже встановлено? Потім я відібрав усі речі, присвячені Android, від Google, вибрав оновлення, і тепер життя знову добре.
rodrigo-silveira

32

Після деяких тестів я виявив, що виною тут може бути опція "Автоматично форматувати XML, відредагований редактором візуального макета" (у Налаштуваннях | Android | Редактори).

В ході своїх тестів я виявив, що зміна властивості (наприклад layout_gravity) в режимі дизайну графічного макета завжди псує візуальне відображення файлу, коли я повертаюся в режим XML (текст), коли цей параметр увімкнено, що у мене немає проблем, коли він вимкнений.

Якщо ви хочете відформатувати XML після повернення з режиму дизайну графічного макета, просто скористайтесь комбінацією клавіш Ctrl+ Shift+ F. Крім того, я не побачив жодної проблеми з використанням опції "Форматувати при збереженні"; навіть коли я використовую його в режимі графічного макета; так що ви можете використовувати замість цього Ctrl+, Sпоки ви все ще перебуваєте в режимі графічного макета, щоб одночасно зберігати та форматувати XML.

Я спробував інші параметри редакторів, такі як "Показати індикатор діапазону" або "Використовувати символи, щоб показати зміни у вертикальній лінійці", але я не побачив жодної різниці в поведінці при активації або деактивації цих параметрів.

Нарешті, виправити візуальне відображення файлу, коли він пошкоджений; Я виявив, що використання комбінації клавіш: Ctrl+ A, Ctrl+ C, Ctrl+ Vтрохи легше, ніж закриття / повторне відкриття файлу. Це еквівалентно вибору Виділити все, Копіювати, Вставити; ефективно копіюючи весь файл XML над собою.


4
Використовуючи версію ADT 20120624 ... та службу Indigo Service Release 2 та SDK Tools Rev 20, а функція «Автоматичне форматування XML ...» неактивна, у мене все ще зникають рядки та перетворюються на інші рядки.
Брайан

1
Спробуйте з Юноною. На даний момент я більше не можу відтворити цю помилку разом з Juno. Однак є й інші помилки з Juno. Наприклад, одночасно з двома відкритими файлами XML ключ видалення діяв на неправильний файл: спроба видалити один символ в одному файлі замість цього видалила символ у іншому файлі. Однак клавіша Backspace була в порядку. Мені також доведеться змінити конфігурацію eclipse.ini за замовчуванням, оскільки час від часу при спробі запустити EXE на емуляторі я отримую повідомлення про помилку про відсутність місця в купі. Ви перевіряли як 32-розрядну, так і 64-розрядну версії?
SylvainL

Я вважаю, що використовував лише 32-розрядну версію.
Брайан

Це найкраща відповідь на сьогоднішній день, оскільки вона зменшує частоту виникнення цієї помилки, але не усуває її, тому питання все ще залишається відкритим.
Сем

1
Я все ще маю цю проблему іноді, але не з графічним редактором: натомість це з файлом AndroidManifest.xml; які використовують інший редактор. Це з останньою версією - Juno, але я повинен визнати, що останнім часом у мене не було багато часу для роботи над моїм додатком для Android, тому я не можу точно сказати точно.
SylvainL

12

Ця помилка все ще відчувається на Juno (Eclipse 4.2.0, ADT r20).

Моє виправлення: Перейдіть до Вікна -> Налаштування -> Android -> Редактори. У мене встановлено позначку "Форматувати XML із використанням стандартного Android XML ..." та "Використовувати налаштування Eclipse для відступу ...." . Це вирішило проблему для мене.


1
Ні. Просто зніміть прапорець біля пункту «Форматувати XML за допомогою стандартного Android XML ...». Це виправить дивний XML-збій, але також вам доведеться жити за дотриманням Eclipse.
tom_mai78101

Особисто я віддаю перевагу конвенції Eclipse; Android не робить розмежування між закритою дужкою із закритим тегом ( >) та закриваючою дужкою із закритим тегом ( />) для визначення, чи слід передувати пробілу (опція обмежена обома або жодним). Це здається тривіальним питанням, але з якихось причин це мене дуже дратує.
JAB

12

РЕДАГУВАТИ: містять швидший метод, тому його було доведено до початку:

Ctrl+ F -> заповнити так:

  1. "Знайти"          "\ r \ r \ n"
  2. "Замінити"    "\ r \ n"
  3. Перемикач «Регулярний вираз» в положення ON
  4. потрапив в «Замінити все» кнопку
  5. Ctrl+A
  6. скасувати виділення тексту.
  7. бути щасливим =)

Оригінал був тут: Тільки не приховуйте цю проблему, якщо ви можете її вирішити. Інколи навіть закриття файлу XML не допомагало.

Щоб виправити це, давайте розглянемо причину цього. Перш за все увімкніть " Показати пробіли " ( Вікно> Налаштування> Загальне> Редактори> Текстові редактори> Показати пробіли )

Потім поверніться до свого XML-файлу.

введіть тут опис зображення

На масштабованому зображенні ви можете побачити різницю кольорів символу "\ n";

тоді просто поставте курсор до того символу, який є більш темним.
введіть тут опис зображення

дивіться, два рядки вибрано 0o ... це може бути причиною!

так що просто видаліть його та натисніть кнопку "Enter" або "Return", щоб додати символ "\ n". введіть тут опис зображення
Сподіваюся, це допоможе вам.


також ви можете знайти інший символ кінцевої лінії:
введіть тут опис зображення


Просто видаліть його теж, і ваш XML матиме чудовий вигляд!

PS вибачте за гіперпосилання, я новачок, і на SO я не можу завантажити зображення або більше 2 посилань. так що сподіваюся, ви зрозумієте справу без додаткових фотографій;)

PPS Thx для хлопця, який проголосував, тепер я можу надати це із зображеннями.


Дуже дякую. Я не зміг змусити коментар із найкращими оцінками спрацювати, але цей чудово працював.
публічна статична порожнеча

4

Я мав ту саму складність і нарешті знайшов рішення: клацніть правою кнопкою миші в редакторі, виберіть Source/Cleanup Document.


0

У мене було те саме питання. Вирішенням стали наступні кроки. Посилання припускає, що це спрацювало для інших.

  1. Перейдіть до Налаштування -> клавіші
  2. Скасувати копію, вставити та вирізати (натисніть "застосувати", потім "добре")
  3. повторіть крок 1
  4. Відновіть незв'язані команди з кроку 2 (я не відновив вирізаний файл, але впевнений, у вас все буде добре)

Зверніть увагу, що для кожної з 3 команд є 2 прив’язки

  1. Розв’язати вторинну функцію як для копіювання, так і для вставлення (залиште ctl + c / ctl + v [скопіювати / вставити] зв’язаним)

На цей момент у вас повинно бути встановлено лише 2 прив’язки для копіювання / вставки (тобто ctl + c / ctl + v)

  1. Натисніть застосувати -> Добре

Це рішення було знайдено тут .


0

Коли ця помилка з'являється з новими версіями ADT (які є обов'язковими для виправлення і де помилка не повинна з'являтися часто), просто скористайтеся інструментом Lint, щоб виправити це.

Знайдіть його у попередженнях про Lint та клацніть на жовту піктограму лампочки у верхньому правому куті цього списку попереджень про Lint.

Сподіваюся, це комусь допоможе

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.