R.java再生后,许多领域无法识别

时间:2013-12-30 09:10:55

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

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

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

谢谢大家,你的每一个答案都让我摆弄并检查/重新检查,我发现了真正的问题。这不是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和incorrect_toast。

答案 2 :(得分:1)

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

希望这有助于某人。

答案 3 :(得分:0)

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

您必须找到该错误并进行修复。检查,仔细检查并三重检查您的xml文件。

答案 4 :(得分:0)

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

中查看此文件
import com.org.packagename.R;