R不存在 - R无法解析为变量,找不到与给定名称匹配的资源

时间:2014-03-17 13:32:00

标签: java android xml r.java-file

我的项目没有R.java文件。我知道它应该是自动生成的,但事实并非如此。 在我的.java文件中,每当有对象时,我都会收到错误消息“R无法解析为变量” 例如,在这样的一行中提到R-class:

this.setContentView(R.layout.myform);

...

我有一个名为myform.xml的.xml文件。它包含以下代码:

<EditText
    android:id="@id/message_field"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10"
    android:hint="Enter a message here." >
    <requestFocus />
</EditText>

它呈现此错误消息:

“找不到与给定名称匹配的资源('id'与给定名称'@id / message_field')”

这不是message_field的定义吗?如果没有,我怎么知道它的含义?

5 个答案:

答案 0 :(得分:0)

您缺少+前缀。 您必须使用android:id="@+id/message_field",因为您要为视图声明新ID

答案 1 :(得分:0)

更改

android:id="@id/message_field"

android:id="@+id/message_field"

@id用于引用具有此ID的现有元素,而@+id用于创建新ID。

答案 2 :(得分:0)

替换了这一行...

   android:id="@id/message_field"

有了这个......

  android:id="@+id/message_field"

并检查您是否未导入

        android.R.java

而不是

         R.java

答案 3 :(得分:0)

@id/message_field主要用于相对布局,以引用您已在上面创建的ID。您需要使用android:id="@+id/message_field"

答案 4 :(得分:0)

除了上面的答案之外,还要注意的是,如果XML资源中存在任何错误,Eclipse和Android Studio都会抱怨R文件。至于添加'+',使用所有id声明来做这个是一个好习惯。声明没有'+'的id是合法的,但必须在文件中的其他地方声明为新的id。