移动和消失的代码行;Eclipse的XML编辑器遇到麻烦


95

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

kes!

当我突出显示受影响的代码时,突出显示的行会尝试自行纠正。但是,当我沿相反方向滚动或拖动鼠标时,代码将再次移动。本质上,我将从没有错误的文件中显示重复,丢失断行的代码。受影响的文件确实可以编译,如果我关闭/重新打开它们,此问题暂时消失。有什么想法吗?


另外: Jeff Axelrod提供了指向Google 的新错误报告的链接。


对我来说,听起来像是图形问题。您的OS和Eclipse版本是什么?
2012年

Vista和Eclipse 3.7.2我环顾了Eclipse错误站点,但是没有运气。也许我缺少描述性关键字?
山姆

2
我有同样的问题。Win7 Pro 32位和带有Android 17.0.0的Eclipse 3.7.2 ...与您在答案中所述的情况相同。也找不到任何错误报告。
2012年

我也遇到了这种情况,这让我发疯了……就我而言,将Windows XP与eclipse indigo结合使用。问题总是发生,我总是从图形布局切换到xml编辑器
mdelolmo

1
Android错误报告在此处提交。
杰夫·阿克塞尔罗德

Answers:


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工具和Eclipse ADT插件的说明:http : //tools.android.com/preview-channel

-Tor(来自Android工具团队)


感谢您抽出宝贵时间亲自回覆,到目前为止效果很好!对于那些不想下载源代码并在本地构建工具的人,只需按照以下两个步骤安装预构建的版本。(如果忘记了第二步,请阅读安装Eclipse插件。)
2012年

对我来说很棒。我在Eclipse Juno中。刚去帮助>安装新软件>已经安装了什么?然后,我从Google中选择了所有Android设备,并选择了Update,现在生活再次美好。
rodrigo-silveira

32

经过一些测试,我发现“自动格式化由可视布局编辑器编辑的XML”选项(在“首选项” |“ Android” |“编辑器”中)可能是此案的罪魁祸首。

通过测试,我发现在“图形布局”设计模式下更改属性(例如layout_gravity)时,如果将此选项设置为“ ON”,则返回XML(文本)模式时,总是会破坏文件的视觉显示。关闭时我没问题。

如果你想在从图形布局设计模式回报您对XML格式,只需使用快捷键Ctrl+ Shift+ F。另外,使用“保存时格式化”选项也没有任何问题。即使在图形布局模式下使用它;因此您仍可以在图形布局模式下使用Ctrl+ S来保存和格式化XML。

我尝试了其他编辑器选项,例如“显示范围指示器”或“使用字符显示垂直标尺中的变化”,但是在激活或停用这些选项时,我没有看到任何行为上的差异。

最后,纠正文件损坏时的视觉显示;我发现使用快捷方式:Ctrl+ ACtrl+ CCtrl+ V比关闭/重新打开文件要容易一些。这等效于进行全选,复制,粘贴;有效地复制整个XML文件本身。


4
使用ADT版本20120624 ...和Indigo Service Release 2和SDK Tools Rev 20,并且未激活“自动格式化XML ...”,我仍然会消失并变成其他行。
Brian

1
试试朱诺。目前,我无法再用Juno重现此错误。但是,Juno也存在其他错误。例如,一次打开两个XML文件时,删除键作用在错误的文件上:尝试删除一个文件中的一个字符而是删除另一个文件中的字符。但是,Backspace键是可以的。我还必须更改默认的eclipse.ini配置,因为有时会在尝试在模拟器上运行EXE时收到有关缺少堆空间的错误消息。您是否同时检查了32位和64位版本?
SylvainL 2012年

我相信我只使用32位版本。
布赖恩

这是迄今为止最好的答案,因为它可以减少发生此错误的频率,但不能消除该错误,因此问题仍然存在。
山姆

1
有时候我还是会遇到这个问题,但图形编辑器却没有:相反,它是AndroidManifest.xml文件;使用另一个编辑器。这是最新版本的-Juno,但我必须承认,最近我没有太多时间来处理我的Android应用程序,因此我无法确定。
SylvainL 2012年

12

在Juno(Eclipse 4.2.0,ADT r20)上仍然遇到此错误。

我的解决方法:转到窗口->首选项-> Android->编辑器。我同时勾选了“使用标准Android XML格式化XML ...”“使用Eclipse设置缩进....”。这为我解决了问题。


1
否。只需取消选中“使用标准Android XML格式化XML ...”即可。它将解决奇怪的XML问题,但是您还必须遵守Eclipse约定。
tom_mai78101 2012年

我个人更喜欢Eclipse约定。Android不会区分开标签的右括号(>)和独立标签的右括号(/>)来确定是否以空格开头(该选项仅限于两个或两者都不选)。似乎是一个琐碎的问题,但是由于某种原因,我觉得它很烦人。
JAB

12

编辑: 包含更快的方法,所以它被带到顶部:

Ctrl+ F ->像这样填充:

  1. “查找”          “ \ r \ r \ n”
  2. “替换”    “ \ r \ n”
  3. 开关“正则表达式”ON
  4. 点击“全部替换”按钮
  5. Ctrl+A
  6. 取消选择文本。
  7. 快乐=)

原来在这里: 如果可以解决问题,请不要隐藏该问题。有时甚至关闭XML文件也无济于事。

为了修复它,让我们看一下它的原因。首先,打开“显示空白字符”(“ 窗口”>“首选项”>“常规”>“编辑器”>“文本编辑器”>“显示空白字符”

然后回到您的XML文件。

在此处输入图片说明

在缩放的图像中,您可能会看到“ \ n”符号颜色的差异;

然后只需将光标置于该符号上,该符号就会更暗。
在此处输入图片说明

看,选择了两行0o ...这可能是原因!

因此只需删除它,然后按“ Enter”或“ Return”按钮即可添加“ \ n”符号。 在此处输入图片说明
希望对您有帮助。


您也可能会找到另一条终点线符号:
在此处输入图片说明


只需删除它,您的XML就会看起来很棒!

PS对不起的超链接,我是新手,所以我不能上传图片或超过2个链接。因此,希望您能在没有其他图片的情况下获得启发;)

PPS Thx给投票赞成的人,现在我可以提供图像。


非常感谢。我无法获得票数最高的评论来起作用,但是这一条效果很好。
public static void

4

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


0

我遇到过同样的问题。以下步骤是解决方案。链接建议其为他人工作。

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

请注意,这3个命令中的每一个都有2个绑定

  1. 取消复制和粘贴的辅助功能的绑定(保留ctl + c / ctl + v [复制/粘贴]的绑定)

此时,您应该只设置2个绑定以执行复制/粘贴(即ctl + c / ctl + v)

  1. 点击应用->确定

这里找到此解决方案。


0

当此错误与ADT的新版本一起出现时(必须进行修复,而该错误不应经常出现),只需使用Lint工具即可对其进行修复。

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

希望对别人有帮助

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.