2013-02-07 46 views
20

android在使用XML擴充XML後如何使用R.id.id_name來查找視圖?具有相同編號的兩個視圖

1.假設我有兩個XML,每個都帶有一個具有相同ID的按鈕。

2.I已膨脹他們並轉換它們變成視圖

3.In R.id類只有一個int將爲這兩個按鈕來創建。

android如何區分具有相同id的這些按鈕使用相同的資源名稱(R.id.id_name)。

回答

23

該ID不是唯一的參考。

但是,在實踐中,您可以通過使用父視圖進行區分。

如果我們認爲「這」是一種活動,設置了包含您的按鈕佈局,則:

Button button = (Button) this.findViewById(R.id.id_name); 

將返回找到在佈局中的第一個(我認爲 - 不知道實際行爲被定義)。

但是,您可能要做的是在某些父視圖上調用findViewById,該視圖僅包含一個具有該ID的此類實例。

LinearLayout okParent = (LinearLayout) this.findViewById(R.id.okLayout); 
LinearLayout cancelParent = (LinearLayout) this.findViewById(R.id.cancelLayout); 

Button okButton = (Button) okParent.findViewById(R.id.id_name); 
Button cancelButton = (Button) cancelParent.findViewById(R.id.id_name); 

從概念上講,這是一種基於路徑的查找。你應該小心地設計你的佈局,這樣纔有可能。

6

它知道它應該使用哪一個View,因爲它在當前設置爲內容視圖(或充氣)的XML文件中查找View與此特定id

9

Android採取輕鬆之路:ID不是應用程序範圍內唯一的,而是唯一的佈局範圍。

R.id.foo的值在兩個不同版式中保持控制,其編號爲foo。既然他們沒有爭奪唯一性,那並不重要。

+1

光滑! android採取的非常好的方法 – Archit

相關問題