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" >