2012-05-23 60 views
12

我在相对布局内有以下内容。(找不到id参考)没有资源匹配给定的名称在

<TextEdit 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@id/buttonA" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_toLeftOf="@id/buttonA" /> 

<Button 
    android:id="@+id/buttonA" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:text="@string/message" > 
</Button> 

Eclipse中给了我这些错误的线机器人:layout_alignBottom = “@ ID /按钮a” 和android:分别layout_toLeftOf = “@ ID /按钮a”:

错误:错误:没有资源发现匹配给定的名字(在'layout_alignBottom'的值'@ id/buttonA')。

错误:错误:找不到与给定名称匹配的资源(位于'layout_toLeftOf',值为'@ id/buttonA')。

用@ + id/buttonA替换@ id/buttonA会删除这个eclipse错误信息。这是正确的做法吗?如果是这样,为什么会这样呢?不是@ + id创建一个新的ID?我不想要一个新的ID。我想使用按钮对象中引用的那个。处理这个问题的最佳方法是什么?

谢谢你们。 -Joe

回答

31

使用@+id是正确的做法。 @+id会创建一个新的ID,但前提是该名称不存在。

如果你不想这样做,对于这个特殊的简单情况下,将TextEdit移动到Button以下就足够了。

+0

是的,我会这样做。谢谢。 – J50

+2

我会交换它们,所以ID引用看起来不错。谢谢。为什么@ + id工作?我不是想创建一个新的id资源,而是引用一个稍后定义的资源。 – J50

+0

@ J50:正是因为它在后面定义,所以在尝试使用它时尚未定义。这就是为什么使用@ + id的原因,因为它强制定义这样的id。 –

0

您试图用作参考的布局应在作为参考使用之前定义,即用作'layout_toLeftOf'。

这就像你必须在使用它之前在java中声明一个变量。声明然后使用它...

相关问题