我在Eclipse(Kepler)和R.java文件中遇到了奇怪的问题。症状是经常(但并非总是),Eclipse根本不生成R.java文件,或者如果确实生成它,它会将某些ID标记为在我的源代码中无法解析。即使这些ID显示在R.java文件中。我一直在使用Project>现在清洁了一百万次,但这种行为不断回归。重启Eclipse的明显事情似乎没有改变任何东西。这是一个例子:
(GameActivity.java)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.game); // "game" is marked as not resolvable
}
(R.java)
public final class R {
public static final class layout {
public static final int game=0x7f030000;
public static final int main=0x7f030001;
}
}
这里有什么想法?
答案 0 :(得分:0)
找到并修复错误的代码后,请尝试清理所有项目并再次生成。这是因为您的代码中有一个或多个错误。
请验证项目。 找到并修复错误的代码后,它应该可以正常工作
答案 1 :(得分:0)
R.java是Android Eclipse插件在构建应用程序时创建的文件。 R.java是在“gen”目录下创建的。该文件是根据“res”目录中的信息生成的。如果你运行选择“项目” - >在Eclipse菜单上“清理...”,它将删除然后重新生成R.java文件。
当您在AndroidManifest.xml文件中更改包名称时,会出现“无法解析R”的问题。它使用您的Android软件包名称在“gen”目录下创建一个子目录,用于存储R.java文件。
Eclipse可能在执行clean时遇到问题,因为当您更改Android包名称时,它与R.java文件的位置相混淆。您可以重命名gen下的子目录以匹配新的软件包名称,也可以将软件包名称更改回旧名称。执行clean操作,然后将程序包名称更改为所需的新名称。如果您在更改程序包名称时阻止Eclipse尝试构建,则此方法效果最佳。在“项目”菜单下,取消选中“自动构建”选项,并在“清除...”对话框询问是否应该“立即开始构建”时取消选中该框,以便在您更改时不会尝试构建包名称。更改名称后,您可以再次打开“自动构建”。
请注意,如果您的AndroidManifest.xml文件包名称与您的Java包名称不匹配,Eclipse将最终自动添加“import .R;”所有.java文件中包含对R的任何引用的行。如果更改了AndroidManifest.xml包名称,则Eclipse有时不会更新所有这些添加的导入。如果发生这种情况,请使用Eclipse重构(ALT + Shift + R)将您的一个Java文件中的import语句更改为新的AndroidManifest.xml包名。最好在禁用“自动构建”时执行此操作。
您可以从here
获取参考答案 2 :(得分:0)
感谢您的所有建议。我尝试了一切都没有成功。尝试删除导入,清理+重建项目,查找代码/ xml文件中的错误(无),检查包名称,在此过程中多次重启Eclipse ...一切似乎都没问题。
一段时间后,神秘地错误消失了。我知道这听起来很蹩脚,但我把它归咎于一辆越野车。