我在相对布局中有以下内容。
<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在线路android:layout_alignBottom =“@ id / buttonA”和android:layout_toLeftOf =“@ id / buttonA”分别给出了这些错误:
错误:错误:找不到与给定名称匹配的资源(在'layout_alignBottom'中,值为'@id / buttonA')。
错误:错误:找不到与给定名称匹配的资源(在'layout_toLeftOf',值为'@id / buttonA')。
用@ + id / buttonA替换@ id / buttonA会删除此eclipse错误消息。这是正确的做法吗?如果是这样,为什么会这样呢? @ + id不会创建新的ID吗?我不想要新的身份证。我想使用按钮对象中引用的那个。解决这个问题的最佳方法是什么?
谢谢你们。 -Joe
答案 0 :(得分:31)
使用@+id
是正确的方法。 @+id
会创建一个新ID,但前提是该名称尚不存在。
如果您不想这样做,对于这个特殊的简单情况,将TextEdit
移到Button
下面就足够了。
答案 1 :(得分:2)
您尝试用作引用的布局应在用作参考之前定义,即用作'layout_toLeftOf'。
这就像你必须在使用它之前在java中声明一个变量。声明然后使用它......
如果您需要在文件中定义之前提及ID,则需要使用 @+id/textView1
而不是 @id/textView1