2013-07-31 41 views
0

當通過教程工作到build my first Android application時,我到達了一個部分,其中指出@+id/前綴不僅引用gen/R.java文件中定義的資源,而且+符號還表示它首次遇到它,因此它將創建它。考慮下面的代碼片段:@ + id /聲明的資源範圍?

<EditText android:id="@+id/edit_message" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:hint="@string/edit_message" /> 

通過側欄的第一環節,涉及到資源看完後,和文章它鏈接到名爲Providing Resources(在一定程度上粗略的水平),我無法得到文檔中關於@+id/前綴的資源範圍的非常明確的聲明。據我所知,你可以有一個資源與每個前綴內範圍的同一個名字:

注:此字符串資源具有相同的名稱作爲元素ID:edit_message。但是,對資源的引用始終由資源類型(例如id或字符串)限定,因此使用相同的名稱不會導致衝突。

但是我在駕駛的是這個。基於文檔上出現,我不能有兩個不同的活動資源爲edit_message,因爲會有衝突的兩個控件。

我在這裏擔心的是我大概必須在我的id屬性前加上Activity這個名稱,以保持它們的獨特性,這樣我就可以從代碼中訪問這些控件。

我在這裏的陳述和假設中正確嗎?

+1

http://stackoverflow.com/questions/17825356/how-does-multiple-component-with-same-id-work-in-android/17825464#17825464。檢查這可能會有所幫助 – Raghunandan

回答

3

您可以將該確切的XML塊放在另一個佈局文件中,它會工作得很好。如果尚未定義,@ + id會生成一個新的ID。當你的應用程序被打包,打包工具將再次創建ID和所有其他人將正確地指的是ID。

只要你不與相同的佈局具有相同ID的兩個UI組件結束了,一切都OK。

+0

因此,即使在代碼中它會編組正確的參考?我想這是有道理的,因爲兩項活動不能在同一時間運行,對不對? –