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

时间:2012-04-05 14:39:55

标签: android xml eclipse

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

Yikes!

当我突出显示受影响的代码时,突出显示的行会尝试自行更正。但是当我向相反方向滚动或拖动鼠标时,代码会再次移动。本质上,我将从一个无错误的文件中显示重复,缺失,的代码行。受影响的文件执行编译,如果我关闭/重新打开它们,此问题就会消失。关于发生了什么的任何想法?


增加: Jeff Axelrod提供了指向Google新bug report的链接。

7 个答案:

答案 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 - >填写如下:

  1. “查找”“\ r \ n \ n \ n”
  2. “替换”“\ r \ n”
  3. “正则表达式”切换为开启
  4. 点击“全部替换”按钮
  5. 控制 + A
  6. 取消选择文字。
  7. 快乐=)
  8. 原文在这里: 如果您可以修复它,请不要隐藏该问题。有时甚至关闭XML文件也无济于事。

    为了解决问题,我们来看看它的原因。首先打开“显示空白字符”(窗口>首选项>常规>编辑器>文本编辑器>显示空白字符

    然后回到你的XML文件。

    enter image description here

    在缩放图像中,您可能会看到“\ n”-symbol颜色的区别;

    然后将光标放到那个更黑的符号上。
    enter image description here

    看,有两条线被选中了......这可能就是原因!

    所以只需删除它,然后按“Enter”或“Return”按钮添加“\ n”符号。 enter image description here
    希望对你有所帮助。


    你也可以找到结尾的另一个符号:
    enter image description here


    只需将其删除,您的XML也会很棒!

    P.S。抱歉超链接,我是新手,所以我无法上传图片或超过2个链接。所以希望你能在没有额外照片的情况下明白这一点;)

    P.P.S。对于投票的人来说,现在我可以提供图像。

答案 4 :(得分:4)

我遇到了同样的困难并最终找到了解决方案:在编辑器中右键单击,选择Source/Cleanup Document

答案 5 :(得分:0)

我有同样的问题。以下步骤是解决方案。链接表明它适用于其他人。

  1. 转到首选项 - >键
  2. 取消绑定复制,粘贴和剪切(点击“应用”,然后“确定”)
  3. 重复步骤1
  4. 从第2步恢复未绑定的命令(我没有恢复剪切,但我确定你没事)
  5. 请注意,3个命令中的每个命令都有2个绑定

    1. 取消绑定复制和粘贴的辅助功能(保留ctl + c / ctl + v [复制/粘贴]绑定)
    2. 此时你应该只设置2个绑定来执行复制/粘贴(即ctl + c / ctl + v)

      1. 点击申请 - >行
      2. 找到此解决方案here

答案 6 :(得分:0)

如果 ADT的新版本出现此错误(这是必须修复的,并且不应经常出现错误),只需使用Lint工具进行修复..

在Lint警告中找到它,然后点击Lint警告列表右上角的 黄色灯泡 图标..

希望它会帮助某人