移动和消失的代码行; Eclipse 的 XML 编辑器的问题
Posted
技术标签:
【中文标题】移动和消失的代码行; Eclipse 的 XML 编辑器的问题【英文标题】:Moving and vanishing lines of code; trouble with Eclipse's XML Editor 【发布时间】:2012-04-19 07:38:36 【问题描述】:有时我的代码会自行移动,或者只是在 Eclipse XML 编辑器中消失。
当我突出显示受影响的代码时,突出显示的行会尝试自行更正。但是当我向相反方向滚动或拖动鼠标时,代码再次移动。从本质上讲,我会从一个没有错误的文件中显示重复、丢失、和断行的代码。受影响的文件 do 编译,如果我关闭/重新打开它们,这个问题就暂时消失了。对正在发生的事情有任何想法吗?
补充: Jeff Axelrod 提供了指向 Google 的新 bug report 的链接。
【问题讨论】:
对我来说听起来像是图形问题。您的操作系统和 Eclipse 版本是什么? Vista 和 Eclipse 3.7.2 我在 Eclipse 错误站点中四处寻找,但没有运气。也许我错过了一个描述性的关键字? 我遇到了同样的问题。 Win7 Pro 32-bit 和 Eclipse 3.7.2 with android 17.0.0 ...与您在答案中描述的场景相同。也找不到任何错误报告。 我也遇到了这种情况,这让我发疯了......在我的情况下,使用带有 eclipse indigo 的 Windows XP。这个问题总是发生我从图形布局切换到 xml 编辑器 Android 错误报告已提交here。 【参考方案1】:此错误(最终)已在 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) 其次,有一个新的 lint 检查,用于查找文档中的断行结尾。这会以增量方式运行,因此如果您编辑存在此问题的 XML 文件,ADT 将为该问题添加一个错误标记 - 以及一个快速修复以对文档执行手术以修复它。
简而言之: 获取 ADT 21 预览版 9;在您的项目上运行 Lint 并查找有关包含断行结尾的文件的任何投诉,如果发现任何问题,请应用 quickfix。从现在开始,使用布局编辑器进行进一步编辑应保持文件格式一致。
仅供参考,相关修复在这里:https://android-review.googlesource.com/#/c/44936/
轻松更新 SDK 工具和 Eclipse ADT 插件的说明在这里:http://tools.android.com/preview-channel
-- 托尔 (来自 Android 工具团队)
【讨论】:
感谢您抽出时间亲自回复,到目前为止效果很好!对于那些不想下载源代码并在本地构建工具的人,只需按照these two steps 安装预建版本。 (如果您忘记了如何执行第二步,请阅读Installing the Eclipse Plugin。) 非常适合我。我在 Eclipse Juno。刚刚去帮助>安装新软件>已经安装了什么?然后我从 Google 中选择了所有 Android 的东西,选择了更新,现在生活又美好了。【参考方案2】:经过一些测试,我发现“自动格式化由可视布局编辑器编辑的 XML”选项(在 Preferences | Android | Editors 中)可能是这里的罪魁祸首。
通过我的测试,我发现在图形布局设计模式下更改属性(例如 layout_gravity)总是会在我返回 XML(文本)模式时搞砸文件的视觉显示已开启,但关闭时我没有问题。
如果您想在从图形布局设计模式返回时格式化 XML,只需使用快捷键 Ctrl+Shift+F .此外,我没有发现使用“保存时格式化”选项有任何问题;即使我在图形布局模式下使用它;因此,当您仍处于图形布局模式时,您可以使用 Ctrl+S 来保存和格式化您的 XML。
我尝试了其他编辑器选项,例如“显示范围指示器”或“使用字符显示垂直标尺的变化”,但我没有发现激活或取消激活这些选项的行为有任何差异。
最后,纠正文件损坏时的视觉显示;我发现使用快捷键:Ctrl+A,Ctrl+C,Ctrl+V 比关闭/重新打开文件要容易一些。这相当于做了一个全选、复制、粘贴;有效地将整个 XML 文件复制到自身之上。
【讨论】:
使用 ADT 版本 20120624... 和 Indigo Service Release 2 和 SDK Tools Rev 20,并且“自动格式化 XML...”未激活,我仍然有线条消失并变成其他线条. 试试朱诺。目前,我不再能够使用 Juno 重现此错误。但是,Juno 也存在其他错误。例如,有一次打开了两个 XML 文件,删除键作用于错误的文件:试图删除一个文件中的一个字符,而不是删除另一个文件中的一个字符。但是,退格键没问题。我还必须更改默认的 eclipse.ini 配置,因为在尝试在模拟器上运行 EXE 时,我会不时收到有关堆空间不足的错误消息。您是否同时检查了 32 位和 64 位版本? 我相信我只使用了 32 位版本。 这是迄今为止最好的答案,因为它减少了这个错误发生的频率,但它并没有消除它,所以问题仍然悬而未决。 我有时仍然会遇到这个问题,但图形编辑器没有:相反,它与 AndroidManifest.xml 文件有关;它使用另一个编辑器。这是最新版本 - Juno,但我必须承认,最近我没有太多时间在我的 Android 应用程序上工作,所以我无法确定。【参考方案3】:在 Juno 上仍然遇到这个错误(Eclipse 4.2.0,ADT r20)。
我的修复: 转到窗口 -> 首选项 -> Android -> 编辑器。 我同时选中了 "Format XML using the standard Android XML..." 和 "Use Eclipse settings for indentation ...."。这解决了我的问题。
【讨论】:
没有。只需取消选中“使用标准 Android XML 格式化 XML...”。它将修复奇怪的 XML 故障,但您也必须遵守 Eclipse 约定。 我个人更喜欢 Eclipse 约定; Android 不区分开放标签右括号 (>
) 和独立标签右括号 (/>
) 以确定是否以空格开头(该选项仅限于两者或两者都没有)。似乎是一个微不足道的问题,但出于某种原因,我觉得它非常烦人。【参考方案4】:
编辑: 包含更快的方法,所以它被带到了顶部:
Ctrl+F -> 像这样填充:
-
“查找” “\r\r\n”
“替换” “\r\n”
将“正则表达式”切换为开启
点击“全部替换”按钮
Ctrl+A
取消选择文本。
要开心=)
原件在这里: 只是不要隐藏这个问题,如果你可以解决它。有时甚至关闭 XML 文件也无济于事。
为了修复它,让我们看看它的原因。首先打开“显示空白字符”(Window > Preferences > General > Editors > Text Editors > Show whitespace characters)
然后回到您的 XML 文件。
在缩放的图像中,您可能会看到“\n”-符号颜色的差异;
然后只需将光标放在那个更暗的符号上。
看,两行被选中 0o... 这可能是原因!
所以只需删除它,然后按“Enter”或“Return”按钮添加“\n”符号。 希望对你有帮助。
你也可以找到 endline 的另一个符号:
把它也删掉,你的 XML 会很好看!
附:对不起超链接,我是新手,所以我不能上传图片或超过 2 个链接。所以希望你能在没有额外图片的情况下明白这一点;)
附言感谢投票的人,现在我可以提供图片了。
【讨论】:
非常感谢。我无法获得投票最多的评论,但这条评论效果很好。【参考方案5】:遇到同样的困难,终于找到了解决方法:在编辑器中右键,选择Source/Cleanup Document
。
【讨论】:
【参考方案6】:我遇到了同样的问题。以下步骤是解决方案。链接建议它对其他人有用。
-
转到首选项 -> 键
取消绑定复制、粘贴和剪切(点击“应用”,然后点击“确定”)
重复步骤 1
从第 2 步恢复未绑定的命令(我没有恢复剪切,但我相信你会没事的)
请注意,3 个命令中的每一个都有 2 个绑定
-
取消绑定复制和粘贴的辅助功能(保留 ctl+c/ctl+v [复制/粘贴] 绑定)
此时您应该只设置 2 个绑定来执行复制/粘贴(即 ctl+c/ctl+v)
-
点击应用 -> 确定
这个解决方案是在here找到的。
【讨论】:
【参考方案7】:当 新版本的 ADT 出现此错误时(这是修复所必需的且错误不应经常出现的地方),只需使用 Lint 工具修复它..
在 Lint 警告中找到它,然后单击该 Lint 警告列表右上角的 黄色灯泡 图标..
希望对大家有所帮助
【讨论】:
以上是关于移动和消失的代码行; Eclipse 的 XML 编辑器的问题的主要内容,如果未能解决你的问题,请参考以下文章
Eclipse Inidigo 中的注释声明托管 bean 和代码完成 [重复]