Движущиеся и исчезающие строки кода; проблема с редактором XML Eclipse

95

Иногда мой код перемещается сам по себе или просто исчезает в редакторе Eclipse XML.

Ой!

Когда я выделяю затронутый код, выделенные строки пытаются исправить себя. Но когда я прокручиваю или перетаскиваю мышь в противоположном направлении, код снова смещается. По сути, у меня будут повторяющиеся, отсутствующие и ломаные строки кода, отображаемые из файла, в котором нет ошибок. Файлы , затронутые сделать компиляции , и если я закрыть / повторно открыть их эта проблема уходит, на данный момент. Есть идеи о том, что происходит?


Дополнение: Джефф Аксельрод предоставил ссылку на новый отчет об ошибке в Google.

Сэм
источник
Для меня это проблема с графикой. Какая у вас версия ОС и Eclipse?
SD
Vista и Eclipse 3.7.2 Я просмотрел сайт ошибок Eclipse, но безуспешно. Может быть, мне не хватает описательного ключевого слова?
Сэм
2
У меня такая же проблема. 32-разрядная версия Win7 Pro и Eclipse 3.7.2 с android 17.0.0 ... Тот же сценарий, который вы описываете в своем ответе. Также не могу найти никаких отчетов об ошибках.
Пэт
Я тоже испытываю это, это сводит меня с ума ... В моем случае использование Windows XP с eclipse indigo. Проблема возникает всегда, когда я переключаюсь с графического макета на редактор xml
mdelolmo
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 в своих проектах и ​​найдите любые жалобы на файлы, содержащие окончание разорванных строк, и, если они обнаружатся, примените quickfix. С этого момента при дальнейшем редактировании с помощью редактора макета файлы должны оставаться в единообразном формате.

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

Инструкции по простому обновлению SDK Tools и плагина Eclipse ADT находятся здесь: http://tools.android.com/preview-channel

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

Тор Норбай
источник
Спасибо, что нашли время ответить лично, пока все работает отлично! Для тех, кто не хочет загружать исходный код и собирать инструменты локально, просто выполните эти два шага, чтобы установить предварительно созданную версию. (Прочтите « Установка подключаемого модуля Eclipse, если вы забыли, как выполнить шаг 2».)
Сэм,
У меня отлично работает. Я в «Затмении Джуно». Просто зашел в раздел «Справка»> «Установить новое программное обеспечение»> «Что уже установлено»? Затем я выбрал все Android-вещи из Google, выбрал «Обновить», и теперь жизнь снова стала хорошей.
Rodrigo-Silveira 07
32

После некоторых тестов я обнаружил, что здесь может быть виновата опция «Автоматически форматировать XML, отредактированный редактором визуального макета» (в Preferences | Android | Editors).

С помощью своих тестов я обнаружил, что изменение свойства (например, layout_gravity) в режиме дизайна Graphical Layout всегда портит визуальное отображение файла, когда я возвращаюсь в режим XML (текст), когда эта опция включена, но что у меня нет проблем, когда он выключен.

Если вы хотите отформатировать XML по возвращении из режима разработки графического макета, просто используйте ярлык Ctrl+ Shift+ F. Также я не видел проблем с использованием опции «Форматировать при сохранении»; даже когда я использую его в режиме графического макета; поэтому вы можете использовать Ctrl+ Sвместо этого, пока вы все еще находитесь в режиме графического макета, чтобы сохранить и отформатировать свой XML.

Я пробовал другие параметры редактора, такие как «Показать индикатор диапазона» или «Использовать символы для отображения изменений на вертикальной линейке», но я не заметил никакой разницы в поведении при активации или деактивации этих параметров.

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

SylvainL
источник
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).

Мое исправление: перейдите в Window -> Preferences -> Android -> Editors. У меня установлены флажки "Форматировать 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. Установите переключатель "Регулярное выражение" в положение ВКЛ.
  4. нажмите кнопку "Заменить все"
  5. Ctrl+A
  6. снять выделение с текста.
  7. будь счастлив =)

Оригинал был здесь: просто не скрывайте эту проблему, если вы можете ее исправить. Иногда даже закрытие XML-файла не помогало.

Чтобы исправить это, давайте посмотрим на причину. Прежде всего, включите « Показывать символы пробела » ( Окно> Настройки> Общие> Редакторы> Редакторы текста> Показывать символы пробела )

Затем вернемся к вашему XML-файлу.

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

В масштабированном изображении вы можете увидеть разницу в цветах символа "\ n";

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

смотри, две строчки выбрано 0o ... может в этом причина!

так что просто удалите его и нажмите кнопку «Enter» или «Return» для добавления символа «\ n». введите описание изображения здесь
Надеюсь, это вам поможет.


также вы можете найти другой символ конечной строки:
введите описание изображения здесь


Просто удалите и его, и ваш XML будет отлично выглядеть!

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

PPS Спасибо парню, который проголосовал за, теперь я могу предоставить это с изображениями.

Двиде Лепрекон
источник
Большое спасибо. Мне не удалось заставить работать самый популярный комментарий, но этот сработал отлично.
public static void
4

У меня была такая же проблема, и я наконец нашел решение: щелкните правой кнопкой мыши в редакторе и выберите Source/Cleanup Document.

шт.
источник
0

Я была такая же проблема. Следующие шаги были решением. Ссылка предполагает, что это сработало для других.

  1. Перейдите в Настройки -> ключи
  2. Отмените привязку копирования, вставки и вырезания (нажмите «Применить», затем «ОК»)
  3. повторите шаг 1
  4. Восстановите несвязанные команды с шага 2 (я не восстанавливал вырез, но уверен, что с вами все будет в порядке)

Обратите внимание, что для каждой из 3 команд есть 2 привязки.

  1. Отменить привязку вторичной функции для копирования и вставки (оставьте ctl + c / ctl + v [copy / paste] привязанным)

На этом этапе у вас должно быть только 2 привязки для выполнения копирования / вставки (например, ctl + c / ctl + v)

  1. Хит применить -> ОК

Это решение было найдено здесь .

Стивен
источник
0

Когда эта ошибка появляется в новых версиях ADT (которые являются обязательными для исправления и где ошибка не должна появляться часто), просто используйте инструмент Lint, чтобы исправить ее.

Найдите его в предупреждениях о Lint и щелкните значок желтой лампочки в правом верхнем углу этого списка предупреждений о Lint.

Надеюсь, это поможет кому-нибудь

Эвоки
источник