Перемещение и исчезновение строк кода; проблема с редактором XML Eclipse

98

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

Изображение 322

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


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

  • 0
    Звучит как проблема с графикой для меня. Какая у вас версия ОС и Eclipse?
  • 0
    Vista и Eclipse 3.7.2 Я осмотрел сайт с ошибкой Eclipse, но не повезло. Может быть, мне не хватает описательного ключевого слова?
Показать ещё 4 комментария
Теги:

7 ответов

33
Лучший ответ

Эта ошибка (наконец) исправлена ​​в 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. С этого момента дальнейшие изменения в редакторе макетов должны содержать файлы в формате.

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

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

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

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

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

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

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

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

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

  • 4
    При использовании ADT версии 20120624 ... и Indigo Service Release 2 и SDK Tools Rev. 20, а также если "Автоматически форматировать XML ..." неактивно, строки все еще исчезают и превращаются в другие строки.
  • 1
    Попробуй с Юноной. В настоящее время я больше не могу воспроизвести эту ошибку с помощью Juno. Однако в Juno есть и другие ошибки. Например, однажды с двумя открытыми файлами XML ключ удаления действовал не на тот файл: попытка удалить один символ в одном файле вместо этого означала удаление символа в другом файле. Однако клавиша Backspace была в порядке. Мне также придется изменить конфигурацию eclipse.ini по умолчанию, потому что время от времени я получаю сообщение об ошибке об отсутствии места в куче при попытке запустить EXE на эмуляторе. Вы проверили 32-битную и 64-битную версии?
Показать ещё 5 комментариев
12

EDIT: содержат более быстрый метод, поэтому он был наверху:

Ctrl + F → заполните так:

  • "Найти"           "\ Г\г\п"
  • "Заменить"   "\ r\n"
  • Переключить "Регулярное выражение" на ВКЛ
  • нажмите кнопку "Заменить все"
  • Ctrl + A
  • Отменить выбор текста.
  • быть счастливым =)

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

Для исправления давайте посмотрим на причину этого. Прежде всего включите "Показывать символы пробелов" ( "Окно" > "Настройки" > "Основные" > "Редакторы" > "Текстовые редакторы" > "Показать пробельные символы" )

Затем вернитесь в свой XML файл.

Изображение 4553

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

затем просто поместите курсор на этот символ, который темнее.
Изображение 4554

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

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


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


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

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

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

  • 0
    Большое спасибо. Я не мог получить комментарий с наибольшим количеством голосов для работы, но этот работал отлично.
12

Все еще испытывает эту ошибку в Juno (Eclipse 4.2.0, ADT r20).

Мое исправление: Перейдите в Окно → Настройки → Android → Редакторы. У меня есть "Формат XML с использованием стандартного Android XML..." и "Использовать настройки Eclipse для отступов....". Это решило проблему для меня.

  • 1
    Нет. Просто снимите флажок «Форматировать XML с использованием стандартного Android XML ...». Это исправит странный глюк XML, но вам также придется жить по соглашению Eclipse.
  • 0
    Лично я предпочитаю конвенцию Eclipse; Android не различает закрывающую скобку с открытым тегом ( > ) и закрывающую скобку автономного тега ( /> ) для определения, следует ли ставить пробел (опция ограничена обоими или ни одной). Похоже, тривиальная проблема, но по некоторым причинам я нахожу это очень раздражающим.
4

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

0

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

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

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

0

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

  • Перейдите в раздел Настройки → ключи
  • Отменить копирование, вставить и вырезать (нажать "применить", затем "ОК" )
  • повторить шаг 1
  • Восстановить несвязанные команды с шага 2 (я не восстановил вырезание, но я уверен, что все будет в порядке)

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

  1. Отключить вторичную функцию для копирования и вставки (оставить ctl + c/ctl + v [копировать/вставить])

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

  1. Применить → OK

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню