Android xml错误:使用RelativeLayout(@ id / LinearLayout_acc,@ id / ProgressBar_statusScreen)发现“找不到与给定名称匹配的资源”

好的,所以这开始真的让我烦恼。 这个错误以非常特殊的方式popup,而不是非常合乎逻辑。

让我首先说我已经看过关于这个错误的其他问题,Google也是这样。 据我所知,大多数类似的问题是因为人们引用一个String资源或其他不在同一个布局文件中的东西,所以他们错放了“@ id +”中的“+”或类似的东西。

我遇到的问题发生在具有RelativeLayout的布局.xml文件中。 这包含一个TableLayout ,包含一些文本的两个LinearLayout ,最后是一个ProgressBar 。 我想要的是进度条与使用android:layout_alignParentBottom="true"的相对布局alignment,然后alignment进度条上方的两个线性布局(底部线性布局在进度条上alignment,另一个在底部上方alignment)线性布局)。

它应该很简单,看起来好像它的工作,即graphics视图显示所需的结果。 然而, 问题来了 ,Eclipse给了我两个线性布局的错误,

“错误:找不到与指定名称相匹配的资源(位于'layout_above',值为'@ id / LinearLayout_acc')”。

对于涉及进度条的其他线性布局也有同样的错误。 我有三倍以上的检查,没有input错误(id也存在于packagename.R.java中),而且我已经尝试了十几次清理项目。

保存(和自动构build)时,我不会收到错误,直到我决定运行该项目。 另一个奇怪的是,当我从进度条而不是顶部线性布局引用底部线性布局时,我没有任何错误!

我的布局文件:

 <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提供了更改布局文件中外观顺序的解决scheme,以便元素只引用在读取引用时已定义的其他元素。
此外,正如其他人所发布的,即使在引用中更改@id/ to @+id/ ,也会删除错误消息。 正如Marco W.在这个主题中所写的,事情是你必须使用@+id/第一次提到每个id,然后使用@id/ ,尽pipe第一次可能不是定义。

我做了大部分的devise,并在Eclipse的graphics编辑器中设置引用的id,所以导致错误消息的代码被自动插入。 也许这是Eclipse中的一个错误。

请检查下面的代码

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/ic_launcher" > <TableLayout android:layout_width="wrap_content" android:layout_height="wrap_content" /> <LinearLayout android:id="@+id/LinearLayout_dist" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/LinearLayout_acc" android:layout_centerHorizontal="true" android:layout_marginBottom="10dp" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="FIRST" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="SECOND" /> </LinearLayout> <LinearLayout android:id="@+id/LinearLayout_acc" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/ProgressBar_statusScreen" android:layout_centerHorizontal="true" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="THIRD" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="FOURTH" /> </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> 

另请检查以下链接 。 它说,android:layout_below =“@ id / myTextView”不会识别一个ID为“myTextView”的元素,如果它写在你使用它的元素之后的话。

更改

 @id/LinearLayout_acc 

 @+id/LinearLayout_acc 

将每个id @id更改为@+id ,无论何时定义或引用id。 有了这个,你不会得到

Android xml错误:使用RelativeLayout(@ id / LinearLayout_acc,@ id / ProgressBar_statusScreen)发现“找不到与给定名称匹配的资源”。

  <LinearLayout android:id="@+id/LinearLayout_dist" android:layout_above="@+id/LinearLayout_acc" <--- here might be a problem you forgot + sign android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginBottom="10dp" >