必須在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