2010-07-12 122 views
8

任何想法为什么有时Eclipse会破坏并且无法识别它在数秒前做过的代码?下面的代码中的“R”在5分钟前没有红色的波浪曲线,我没有更改任何代码。这种情况经常发生在Eclipse上,通常我会关闭它并重新启动它,这是很好的选择...这次不行。Eclipse无法识别Android上的“R.id ...”

// Initialize view elements 
    mSearchBox  = (EditText) this.findViewById(R.id.edittext_search); 
    mSearchButton = (Button) this.findViewById(R.id.button_search); 

回答

10

听起来好像R类需要重新生成,请尝试对布局文件进行更改并保存,以便项目重建。

+1

谢谢,但那并没有工作......任何其他的想法。 – taraloca 2010-07-12 13:57:03

+2

检查您的xml文件中是否存在错误,如果其中一个存在错误,则可能导致生成R失败。你应该能够看到在Android控制台的任何错误,再加上检查“问题”窗口。 – 2010-07-12 14:07:34

+0

谢谢......我在我的一个xml文件中遇到了错误。更正它,现在问题已修复。 – taraloca 2010-07-12 14:28:23

11

你不小心导入了android.R。*;在任何情况下?我进口的这一个,这使得日食不承认其它所有生成的R类,请确保您导入从项目中的一个:

import <project_name>.R; 
+0

Aaaarrggh ...这发生在我身上不止一次!不知道我在代码中如何导入 .R。非常感谢! – 2014-03-18 19:53:36

+1

日食再次咬我。 – lalitm 2014-04-12 13:13:09

1

由于Android的开发工具(ADT)的14,资源等领域R.id.在库项目中定义时不再是常量。这对于使库项目可重用而不重新编译它们是必要的。

R.id.有一个简单的解决方法。你知道是正确的,但Android认为这是不正确的。 (假设你的.xml文件是正确的,你的java代码引用正确的资源,而你没有“进口android.R;”语句)

  1. 将光标定位在switch语句,并用鼠标右键单击它。
  2. 选择QUICK FIX。 Eclipse会将您的交换机标记转换为if-else if-else语句。
  3. 这应该解决R.id.问题。
5

这是Android的非常普遍的问题只是按照此,

  • 进入工程菜单
  • 选择 “干净” 的选项。
  • 确保“自动构建选项被选中”

做过,你R.java的错误将得到解决。

+2

好的...当它工作(需要好运) – 2014-03-18 19:46:24

1

我遇到了同样的问题。我所做的只是擦除“import android.R”语句,Eclipse自动为我提供我需要的输入。一旦我点击保存,我的所有错误都消失了。我试图弄清楚这三天挣扎了三天。

顺便说一句 - 确保你对所有文件都这样做。

0

除上述答案外,如果您尚未在AndroidManifest.xml中声明包,或者声明了错误的包,则可能会发生此错误。确保你有

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.applicationname" ... 
0

如果你觉得你的代码是正确的,你仍然得到这个错误然后。

右键单击Project >> Build Project,此错误将消失。

您也可以将其中项目建成自动

点击项目选项卡>>自动构建的设置。

希望这可以解决您的问题!

0

您是否将任何图像文件添加到您的可绘制文件夹?具有无效文件名的图像文件也会导致相同的问题。