【问题标题】:Eclipse can't find generated ids from R.javaEclipse 找不到从 R.java 生成的 id
【发布时间】:2014-01-31 14:31:39
【问题描述】:

我对 Eclipse (Kepler) 和 R.java 文件有奇怪的问题。症状是经常(但不总是),Eclipse 要么根本不生成 R.java 文件,要么生成它,它会将一些 ID 标记为在我的源代码中不可解析。即使这些 ID 显示在 R.java 文件中。我已经使用 Project > Clean 一百万次了,但这种行为一直在出现。重启 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;
    }
}

有什么想法吗?

【问题讨论】:

  • 启用自动构建选项。您不必在每次修改项目时都构建项目。
  • 还要检查你的 XML 文件是否有一些错误标记,当资源有一些错误时,有时 R.java 没有构建
  • 检查您的班级中是否不小心出现import android.R; 行。
  • 执行“项目清理”并确保代码中的某处没有错误。也看看以下问题的答案stackoverflow.com/questions/16995402/…
  • @aniket:是的。我有这个。我也试过没有它。没有区别。

标签: java android eclipse


【解决方案1】:

找到并修复错误代码后,尝试清理所有项目并重新生成它。这是因为您的代码中有一个或多个错误。

请验证项目。 找到并修复错误的代码后,它应该可以工作

【讨论】:

    【解决方案2】:

    R.java 是 Android Eclipse 插件在构建应用程序时创建的文件。 R.java 在“gen”目录下创建。该文件是根据“res”目录中的信息生成的。如果在 Eclipse 菜单上运行选择“Project”->“Clean...”,它将删除然后重新生成 R.java 文件。

    当您在 AndroidManifest.xml 文件中更改包名称时,会出现“R 无法解决”的问题。它使用您的 Android 包名称在“gen”目录下创建一个子目录,用于存储 R.java 文件。

    Eclipse 可能在执行 clean 时遇到问题,因为当您更改 Android 包名称时,它会混淆 R.java 文件的位置。您可以重命名 gen 下的子目录以匹配您的新包名称,也可以将包名称更改回旧名称。进行清理,然后将包名称更改为您想要的新名称。如果您在更改包名称时阻止 Eclipse 尝试构建,这将最有效。在“项目”菜单下,取消选中“自动构建”选项,以及当“清理...”对话框询问是否应该“立即开始构建”时,取消选中该框,以便在您更改时不会尝试构建包名。更改名称后,您可以再次打开“自动构建”。

    请注意,如果您的 AndroidManifest.xml 文件包名与您的 Java 包名不匹配,Eclipse 最终会自动添加“import .R;”在所有引用 R 的 .java 文件中添加一行。如果更改 AndroidManifest.xml 包名称,有时 Eclipse 不会更新所有这些添加的导入。如果发生这种情况,请使用 Eclipse 重构 (ALT + Shift + R) 将其中一个 Java 文件中的导入语句更改为新的 AndroidManifest.xml 包名称。最好在禁用“自动构建”时执行此操作。

    您可以从here获得参考

    【讨论】:

    • 感谢您的长回答。我没有在任何地方更改包名称,清单中仍然有正确的名称(与所有其他文件中的相同)。但是,所有文件中都有 import android.R 语句吗?当我删除它时,它会立即恢复。
    • 检查项目中的导入是否存在“import android.R”,然后将其删除,这样您的项目将不使用默认的 Android 资源类解析 R,而是使用从 / res/文件夹。;
    【解决方案3】:

    感谢您的所有建议。我尝试了一切都没有成功。尝试删除导入、清理 + 重建项目、查找代码/xml 文件中的错误(无)、检查包名称、在此过程中多次重新启动 Eclipse……一切似乎都很好。

    神秘地过了一会儿错误就消失了。我知道这听起来很蹩脚,但我将此归咎于有缺陷的 Eclipse。

    【讨论】:

    • 你可能在某些 XML 文件上做错了,每次我遇到这个错误时,我在我的一个 XML 文件上犯了一个小错误,我很高兴你修复了它(y)
    • @murillo:也许 ;) 永远不可能如此确定。但是,如果 xmls 中有错误,我什至没有 R.java 文件……所以对我来说很神秘。
    猜你喜欢
    • 2015-02-21
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    相关资源
    最近更新 更多