好的,这开始让我很烦。该错误会以一种非常特殊的方式弹出,而不是非常合乎逻辑的方式。
首先,我要说的是,我已经查看了有关此错误的其他问题,Google也这样做了。据我所知,大多数类似问题的发生是因为人们引用了String
资源或不在同一布局文件中的其他内容,他们将'+'放置在'@ id +'或类似内容中。
我的问题出现在带有RelativeLayout
。的layout .xml文件中。其中包含一个TableLayout
,两个LinearLayout
包含一些文本,最后一个ProgressBar
。我想要的是将进度条与使用的相对布局android:layout_alignParentBottom="true"
对齐,然后将进度条上方的两个线性布局对齐(底部线性布局在进度条上方对齐,另一个在底部线性布局上方对齐)。
它应该足够简单,看起来好像可行,即图形视图显示所需的结果。但是,问题来了,Eclipse在两个线性布局上给了我一个错误,
“错误:找不到与给定名称匹配的资源(在'layout_above,值为'@ id / LinearLayout_acc')。”
以及其他线性布局的相同错误(请参考进度条)。我已经检查了三次以上,确认没有错别字(在packagename.R.java中也存在ID),并且我已经尝试过多次清理项目。
保存(和自动构建)时不会出现错误,除非我决定运行该项目。另一个怪异的事情是,当我从进度条引用底部的线性布局而不是顶部的线性布局时,我没有任何错误!
我的布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/background_activity" >
<TableLayout
... />
<LinearLayout
android:id="@+id/LinearLayout_dist"
android:layout_above="@id/LinearLayout_acc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginBottom="10dp" >
<TextView
... />
<TextView
... />
</LinearLayout>
<LinearLayout
android:id="@+id/LinearLayout_acc"
android:layout_above="@id/ProgressBar_statusScreen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true" >
<TextView
... />
<TextView
... />
</LinearLayout>
<ProgressBar
android:id="@+id/ProgressBar_statusScreen"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_margin="16dp" />
</RelativeLayout>
请帮助,我不知道是什么原因导致此错误!
编辑答案
Shrikant提供了更改布局文件中外观顺序的解决方案,以使元素仅引用在读取引用时已经定义的其他元素。
同样,正如其他人所发布的那样,即使在参考中也将更@id/
改为@+id/
,确实会删除错误消息。正如Marco W.在此线程中所写的,事情是,即使第一次可能不是定义,您也必须@+id/
第一次使用每个id,然后再使用@id/
。
我完成了大部分设计,并在Eclipse的图形编辑器中设置了引用的ID,因此会自动插入导致错误消息的代码。也许这是Eclipse中的错误。