移动和消失的代码行; Eclipse 的 XML 编辑器的问题

有时候我的代码会自动移动,或者只是在 Eclipse XML 编辑器中消失。

Yikes!

当我突出显示受影响的代码时,突出显示的行会尝试自我纠正。但是当我向相反的方向滚动或拖动鼠标时,代码会再次移动。本质上,我将有重复,丢失,还有破碎的代码行显示从否则错误自由的文件。影响 编译的文件,如果我关闭/重新打开它们,这个问题就会暂时消失。知道是怎么回事吗?


附加: Jeff Axelrod 提供了一个到 Google 新 漏洞报告的链接。

11077 次浏览

After some tests, I have found that the option "Automatically format the XML edited by the visual layout editor" (in Preferences | Android | Editors) might be the culprit here.

With my tests, I've found that changing a property (such as the layout_gravity) while in Graphical Layout design mode always screw up the visual display of the file when I go back to the XML (text) mode when this option is ON but that I have no problem when it's off.

If you want to format the XML upon your return from the Graphical Layout design mode, simply use the shortcut Ctrl+Shift+F. Also, I didn't see any problem with using the option "Format on Save"; even when I use it in the Graphical Layout mode; so you can use Ctrl+S instead while you're still in the Graphical Layout mode to both save and format your XML.

I've tried other editors options like "Show range indicator" or "Use characters to show changes in vertical ruler" but I didn't see any difference in behavior with activating or de-activating these options.

Finally, to correct the visual display of the file when it's corrupt; I found that using the shortcut: Ctrl+A, Ctrl+C, Ctrl+V is a little easier than closing/reopening the file. This is equivalent to making a Select All, Copy, Paste; effectively copying the whole XML file over itself.

Still experiencing this bug on Juno (Eclipse 4.2.0, ADT r20).

My fix: Go to Window -> Preferences -> Android -> Editors. I have both "Format XML using the standard Android XML..." and "Use Eclipse settings for indentation...." checked. This solved the problem for me.

I had the same issue. The following steps were the solution. Link suggest its worked for others.

  1. Go to Preferences -> keys
  2. Unbind copy, paste, and cut (hit "apply", then "ok")
  3. repeat step 1
  4. Restore unbound commands from step 2 (I didn't restore cut, but I'm sure you'd be fine)

Notice there are 2 bindings for each of the 3 commands

  1. Unbind secondary function for both copy and paste (leave ctl+c/ctl+v [copy/paste] bound)

At this point you should only have 2 bindings set to perform copy/paste (i.e., ctl+c/ctl+v)

  1. Hit apply -> OK

This solution was found here.

EDIT: contain faster method, so it was bring to top:

Ctrl+F -> fill like that:

  1. "Find"          "\r\r\n"
  2. "Replace"    "\r\n"
  3. Switch "Regular expression" to ON
  4. hit the "Replace all" button
  5. Ctrl+A
  6. deselect text.
  7. be happy =)

Original was here: Just don't hide that issue, if you may fix it. Some times even closing the XML file didn't help.

For fix it let's look at the reason of it. First of all Turn On "Show Whitespace Characters" (Window > Preferences > General > Editors > Text Editors > Show whitespace characters )

Then back to your XML-file.

enter image description here

In scaled image you may see the difference of "\n"-symbol colors;

then just put cursor to that symbol, which is more dark.
enter image description here

look, two lines was selected 0o... that's may be the reason!

so just delete it, and press "Enter" or "Return" button for add "\n" symbol. enter image description here
Hope it help you.


also you may find the other symbol of endline:
enter image description here


Just delete it too, and your XML will have a great look!

P.S. sorry for hyperlinks, i'm newbie and on SO i can't upload image or more than 2 links. so hope you'll get the point without additional pictures ;)

P.P.S. Thx to guy who vote up, now i can provide this with images.

I had the same difficulty and finally found the solution: Right click in the editor, select Source/Cleanup Document.

This bug is (finally) fixed in ADT 21. The fix is now available in ADT 21 Preview 9, posted a few minutes ago, here: https://android-review.googlesource.com/#/c/44936/1

The reason you get weird visual artifacts is that if a file contains broken DOS line endings (multiple carriage returns without a newline for each carriage return), Eclipse gets very confused. That's Eclipse issue https://bugs.eclipse.org/bugs/show_bug.cgi?id=375421 .

There are two parts to the fix: (1) First, ADT was fixed such that it no longer introduces these \r\r sequences into the document. This makes sure that you don't get new documents which triggers the weird editing behavior, but it does not retroactively fix older documents with these line endings, so if you open them, you still get weird editing behavior.

(2) Second, there's a new lint check which looks for broken line endings in documents. This runs incrementally, so if you edit an XML file which has this problem, ADT will add an error marker for this problem -- along with a quickfix to perform surgery on the document to fix it.

In short: Get ADT 21 Preview 9; run Lint on your projects and look for any complaints about files containing broken line endings, and if it finds any, apply the quickfix. From now on, further edits with the layout editor should keep the files consistently formatted.

FYI, the relevant fix is here: https://android-review.googlesource.com/#/c/44936/

Instructions for easily updating SDK Tools and the Eclipse ADT plugin are here: http://tools.android.com/preview-channel

-- Tor (from the Android tools team)

When this bug appears with new versions of ADT (which are mandatory for fixing and where bug should not appear often) just use Lint tool to fix it..

Find it in Lint warnings and click yellow bulb icon in upper right corner of that Lint warnings list..

Hope it will help somebody