有时我的代码会自行移动,或者只是在Eclipse XML编辑器中消失。
当我突出显示受影响的代码时,突出显示的行会尝试自行更正。但是当我向相反方向滚动或拖动鼠标时,代码会再次移动。本质上,我将从一个无错误的文件中显示重复,缺失,和的代码行。受影响的文件执行编译,如果我关闭/重新打开它们,此问题就会消失。关于发生了什么的任何想法?
增加: Jeff Axelrod提供了指向Google新bug report的链接。
答案 0 :(得分:32)
经过一些测试,我发现选项“自动格式化由可视化布局编辑器编辑的XML”(在“首选项”|“Android |编辑器”中)可能是这里的罪魁祸首。
通过我的测试,我发现在图形布局设计模式下更改属性(例如layout_gravity)时,当我返回到XML(文本)模式时,总是搞乱文件的可视化显示是开启但是当它关闭时我没有问题。
如果要在从图形布局设计模式返回时格式化XML,只需使用快捷键 Ctrl + Shift + F 。另外,我没有看到使用“保存格式”选项的任何问题;即使我在图形布局模式下使用它;因此,当您仍处于图形布局模式时,可以使用 Ctrl + S 来保存和格式化XML。
我尝试了其他编辑器选项,例如“显示范围指示器”或“使用字符显示垂直标尺的变化”,但我没有看到激活或取消激活这些选项的行为有任何差异。
最后,纠正文件腐败时的视觉显示;我发现使用快捷方式: Ctrl + A , Ctrl + C , Ctrl + V 比关闭/重新打开文件容易一些。这相当于选择全部,复制,粘贴;有效地将整个XML文件复制到自身上。
答案 1 :(得分:32)
此错误(最终)已在ADT 21中修复。修复程序现已在ADT 21预览版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 \ n \ r \ n序列引入文档中。这可以确保您不会获得触发奇怪编辑行为的新文档,但它不会追溯性地修复具有这些行结尾的旧文档,因此如果您打开它们,您仍然会得到奇怪的编辑行为。
(2)其次,有一个新的lint检查,用于查找文档中的折线结尾。这是逐步运行的,因此如果您编辑出现此问题的XML文件,ADT将为此问题添加一个错误标记 - 以及一个quickfix来对文档进行手术以修复它。
简而言之: 获取ADT 21预览9;在您的项目上运行Lint并查找有关包含折线结尾的文件的任何投诉,如果找到任何内容,请应用quickfix。从现在开始,使用布局编辑器进行进一步编辑应该保持文件的格式一致。
仅供参考,相关修复方法如下:https://android-review.googlesource.com/#/c/44936/
有关轻松更新SDK工具和Eclipse ADT插件的说明,请访问:http://tools.android.com/preview-channel
- Tor (来自Android工具团队)
答案 2 :(得分:12)
在Juno上仍然遇到这个错误(Eclipse 4.2.0,ADT r20)。
我的修复: 转到窗口 - >偏好 - > Android - >编辑。 我有“使用标准Android XML格式化XML ...”和“使用Eclipse设置进行缩进....”选中。这解决了我的问题。
答案 3 :(得分:12)
修改强> 包含更快的方法,因此它被带到了顶部:
Ctrl + F - >填写如下:
原文在这里: 如果您可以修复它,请不要隐藏该问题。有时甚至关闭XML文件也无济于事。
为了解决问题,我们来看看它的原因。首先打开“显示空白字符”(窗口>首选项>常规>编辑器>文本编辑器>显示空白字符)
然后回到你的XML文件。
在缩放图像中,您可能会看到“\ n”-symbol颜色的区别;
然后将光标放到那个更黑的符号上。
所以只需删除它,然后按“Enter”或“Return”按钮添加“\ n”符号。
希望对你有所帮助。
你也可以找到结尾的另一个符号:
只需将其删除,您的XML也会很棒!
P.S。抱歉超链接,我是新手,所以我无法上传图片或超过2个链接。所以希望你能在没有额外照片的情况下明白这一点;)
P.P.S。对于投票的人来说,现在我可以提供图像。
答案 4 :(得分:4)
我遇到了同样的困难并最终找到了解决方案:在编辑器中右键单击,选择Source/Cleanup Document
。
答案 5 :(得分:0)
我有同样的问题。以下步骤是解决方案。链接表明它适用于其他人。
请注意,3个命令中的每个命令都有2个绑定
此时你应该只设置2个绑定来执行复制/粘贴(即ctl + c / ctl + v)
找到此解决方案here。
答案 6 :(得分:0)
如果 ADT的新版本出现此错误(这是必须修复的,并且不应经常出现错误),只需使用Lint工具进行修复..
在Lint警告中找到它,然后点击Lint警告列表右上角的 黄色灯泡 图标..
希望它会帮助某人