【问题标题】:After R.java regeneration, many fields not recognizedR.java 重新生成后,很多字段无法识别
【发布时间】:2013-12-30 09:10:55
【问题描述】:

我有 2 个无法解决的错误,所以我“清理了我的项目”,它删除了我的 R.java 文件,并且没有自动生成。经过多次试验和错误,我发现注释掉每一个错误(这意味着我的项目的 80%),然后再次清理,确实可以重新生成 R.java。但现在不是“R 不是字段”错误,而是我的项目中连接到“R.something”代码的所有变量现在都没有被识别为字段。但是我查看了 R.java,它们都有 id #s。所以我尝试刷新我的项目,并尝试关闭/打开 Eclipse,但没有任何效果。有谁知道如何让这些变量再次被识别?非常感谢您的帮助。

【问题讨论】:

  • 如果你得到它的工作,请回来并发布原因/解决方案.. :)
  • 感谢 TheLostMind,解决方案如下!我将其发布为答案。 :)

标签: java android eclipse field r.java-file


【解决方案1】:

AFAIK R.java 由于以下原因无法生成。 1)大写的资源命名。 2)布局组件的ID中的空格,如按钮ID等。 3) 用于命名资源的任何数字。

【讨论】:

    【解决方案2】:

    谢谢大家,你的每一个答案都让我摆弄和检查/重新检查,我发现了真正的问题。这不是 xml 中的错误,而是我的 main.java 文件中的警告(导致所有红色错误),当我设法重新生成我的 R.java 文件时发生了自动生成的导入。它看起来像这样:

    import android.R
    

    一个微小的黄色警告表示该代码不需要存在并且可能导致其他错误。这正是发生的事情。所以我删除了导入(我几乎不知道 R.java 在我的 main.java 文件中不需要导入声明)。当我执行 [command]+[shift]+[O] 时,它也不会自行擦除,很高兴知道删除它消除了所有红色错误。

    感谢您的所有想法!真的很有帮助。

    为了更清楚一点,错误出现在我所有的R.layout.variable_name_here 代码中,这是有道理的,因为它以某种方式连接到 R.java。

    这是一个示例(我发现错误的地方):

    private void checkAnswer(boolean userPressedTrue) {
            boolean answerIsTrue = mQuestionBank[mCurrentIndex].isTrueQuestion();
    
            int messageResId = 0;
    
            if (userPressedTrue == answerIsTrue) {
                messageResId = R.string.correct_toast;
            } 
            else {
                messageResId = R.string.incorrect_toast;
            }
    
            Toast.makeText(this, messageResId, Toast.LENGTH_SHORT).show();
    

    连接到 R 的两个变量(以及许多其他变量)都有错误:correct_toast 和 wrong_toast。

    【讨论】:

      【解决方案3】:

      如果混合使用点(.) 和下划线(_),也会出现此错误。例如android:id="@+id/comment_label"android:id="@+id/comment.label" 生成了两个具有相同名称的字段,即comment_label,因此出现错误。

      希望这对某人有所帮助。

      【讨论】:

        【解决方案4】:

        您的一些 xml 文件中有错误 - 布局、可绘制文件和任何其他可以通过 R 类访问的文件。这可能只是语法错误,但这是不生成 R.java 的最常见问题。

        您必须找到该错误并修复它。检查、仔细检查和三重检查您的 xml 文件。

        【讨论】:

        • 你为什么不发布你的代码,包括你的 XML 内容,这可以帮助你从第三眼看到问题。通常是错误的语法,错误的引用 有时可能会导致这类问题......在这些情况下,第三只眼睛会有所帮助...... SO中有很多例子表明:)
        • @Gem_Ram,你确定你评论的是正确的帖子吗?
        【解决方案5】:

        确保您的布局文件没有错误,并在您的活动/片段中检查此文件

        import com.org.packagename.R;
        

        【讨论】:

        • 谢谢 Saj,我该如何检查?我对 Android/Java 很陌生。
        • Welcome Noni,你已经发现,应该像 'import com.org.packagename.R' 而不是 'import android.R'
        猜你喜欢
        • 2012-02-24
        • 2013-05-18
        • 2012-08-27
        • 1970-01-01
        • 2016-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多