1

我只是尝试在 Eclipse 的项目工作区中导入一个示例项目,但甚至没有触及代码,它给出了大量的错误,所有这些错误都表明 R.java 无法转换为变量。但是文件 R.java 根本不存在于树结构中,我不知道它去了哪里。现在,当我创建一个新的 Android 项目时,它也会在该新项目中再次出现相同的错误。我经常遇到这个问题,这对我来说是一个很大的障碍..

谁能告诉问题的原因和解决方案?提前致谢。

4

8 回答 8

3

一些背景知识:R.java 是从您的项目资源中自动生成的。当您向项目添加布局或可绘制资源之类的内容时,Android SDK 将为您编译并为其分配资源 ID,而 R.java 类保存这些 ID。

有时,在导入示例项目时,Eclipse 无法(或需要很长时间)根据资源生成 R 类,同时您会看到这是一个错误。如果您尝试使用自动导入修复程序 (Ctrl+Shift+O) 修复错误,问题会变得更糟,因为 Eclipse 会添加import android.R到您的文件中,这是不正确的(如果您在任何文件中发现它,请删除它) .

这种情况下的解决方案通常是清理项目(Project | Clean)并重新构建它,它应该可以正常工作。

但是请注意,如果您看到多条错误消息,则可能隐藏了问题的真正原因——例如,如果您的某个资源文件的 XML 中存在语法错误,这可能会阻止 SDK 生成资源,这反过来又阻止它生成 R.java。因此,请仔细检查以查看是否没有关于 XML、drawable 等上的解析错误的错误消息。

希望这可以帮助。

于 2012-11-19T21:48:48.107 回答
1

也许您忘记将相关库添加到您的项目中?

要转到 Screen1 和 2 ,请从包资源管理器中右键单击您的项目,然后转到属性。

查看问题窗口 screen3,窗口 -> 显示视图 -> 问题

屏幕一

屏幕一

屏幕 2

屏幕 2

屏幕 3

屏幕

于 2012-11-19T21:38:42.543 回答
1

更改文件target=android-X中的project.properties,替换X为示例项目所在的api级别。例如,如果您从 sdk-path\samples\android-17dir 导入示例项目,则将其替换为target=android-17然后重新构建项目。

于 2013-01-18T17:48:37.787 回答
0

通常是未正确安装 Android SDK 的标志。经常发生在我身上,我必须重新指向 SDK 并包含适当的库。

于 2012-11-19T21:40:17.250 回答
0

确保您的源文件不包含像...这样的导入

import android.R;

此外,请检查您的 XML 文件是否正确,因为您的 XML(res 文件夹下的布局等)中的错误可能会导致此问题。

另一个原因可能是您重命名包但未在 AndroidManifest.xml 文件中更新包名称。

于 2012-11-19T21:38:00.990 回答
0

也许您在资源(res 文件夹)中有错误。如果资源中没有错误,请尝试 Project -> Clean。

于 2012-11-19T21:43:15.837 回答
0

Whelp,在研究了这个地狱之后,似乎没有任何工作。然后,在墙上论坛的某个洞中,我找到了一个简单而有效的解决方案。确保 Eclipse 指向正确的 SDK 目录。我不知道我是怎么做到的,但我安装了 2 个 SDK,我正在使用的那个看起来不错,但我有 eclipse 指向一个随机的。

在 elcipse 中更新 SDK 的路径后,R.java 文件开始正确编译。这是没有任何人建议的基本检查。如果您遇到此问题,请花 15 秒时间仔细检查。可以为您节省 3 个小时的 Eclipse 故障排除时间。

于 2013-06-15T01:36:22.733 回答
0

我刚刚在我的电脑上测试了这个,我得到了它的工作。现在,此解决方案不适用于所有样本。它适用于名为 ApiDemo 的项目,但不适用于 MapsDemo。您遇到此问题的原因是因为您没有采取正确的步骤。如果您按照您的说法导入,那么您将遇到这种问题。

这是导致此错误的错误方法:

在项目资源管理器中 - 导入 - 现有项目到工作区

如果你这样做,那么是的.. 你的 R.java 文件将不会被创建。

这是正确的做法:

点击新建 - 项目 - 选择“Android示例项目” - 现在您可以选择您选择的构建目标 - 选择您想要的项目并点击完成。

在运行此项目之前,您必须首先执行以下操作:在 Eclipse 中 - 转到项目 - 并单击“清理”。

现在您将能够运行该项目。

于 2013-02-12T22:19:07.613 回答