我的项目没有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的定义吗?如果没有,我怎么知道它的含义?
答案 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。