必须在XML文件中使用@+
符号上的ID的第一次出现。第二次和以后的时间,你可以 - 也应该 - - 丢弃+
标志。这将有助于发现错别字。例如,假设您有RelativeLayout
。您在RelativeLayout
中有TextView
,其android:id
为@+id/label
。稍后在布局XML文件中,您希望从另一个参考TextView
进行定位(例如,针对android:layout_below
)。
如果您在android:layout_below="@+id/labbel"
(注意错字)中键入,在编译时,这将被视为确定。然而,在运行时,事情将无法正常工作,从小部件被错误定位到彻底崩溃,取决于Android版本。
如果您在android:layout_below="@id/labbel"
输入(注意错字和失踪+
标志),那么你会得到一个编译错误。
UPDATE
由于我不太清楚第一次,很显然,让我们再试一次。
<?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="wrap_content">
<TextView android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="URL:"
android:layout_alignBaseline="@+id/entry"
android:layout_alignParentLeft="true"/>
<EditText
android:id="@id/entry"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/label"
android:layout_alignParentTop="true"/>
<Button
android:id="@+id/ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/entry"
android:layout_alignRight="@id/entry"
android:text="OK" />
<Button
android:id="@+id/cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/ok"
android:layout_alignTop="@id/ok"
android:text="Cancel" />
</RelativeLayout>
上面,你会看到一个RelativeLayout
。您会注意到每个ID的第一次出现会得到+
符号。每个ID的第二次和随后出现都没有得到+
符号。
您可以在所有这些符号上使用+
符号,但如果您输入错字,编译器将无法解决问题。
+
签名有效状态“分配一个新的ID”。没有+
符号状态“使用先前分配的ID,或者如果没有这样的ID,则在编译时失败”。
加号似乎表明ID已添加,并且缺席似乎表示该ID已存在。我只是在实践中看到了这一点,但没有注意到它的必要性......所以...我也想知道更多。 – 2011-04-20 13:51:53
@George Bailey这是一个答案 – Selvin 2011-04-20 13:54:10
@ + George;)我也想知道。它们基本上可以互换吗?我一直只用@ + id。顺便说一句,“Id已经存在”是你的意思是一个资源ID?这就说得通了。 – wired00 2011-04-20 13:54:15