12

我在相对布局中有以下内容。

<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 吗?我不想要一个新的身份证。我想使用按钮对象中引用的那个。处理这个问题的最佳方法是什么?

多谢你们。-乔

4

2 回答 2

31

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

如果您不想这样做,对于这种特殊的简单情况,只需TextEditButton.

于 2012-05-23T18:56:41.453 回答
2

您尝试用作参考的布局应在用作参考之前定义,即用作“layout_toLeftOf”。

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

如果您需要在文件中定义之前提及 id,那么您需要使用 @+id/textView1 而不是 @id/textView1

于 2017-04-09T10:44:27.500 回答