android在使用XML擴充XML後如何使用R.id.id_name
來查找視圖?具有相同編號的兩個視圖
1.假設我有兩個XML,每個都帶有一個具有相同ID的按鈕。
2.I已膨脹他們並轉換它們變成視圖
3.In R.id類只有一個int
將爲這兩個按鈕來創建。
android如何區分具有相同id的這些按鈕使用相同的資源名稱(R.id.id_name)。
android在使用XML擴充XML後如何使用R.id.id_name
來查找視圖?具有相同編號的兩個視圖
1.假設我有兩個XML,每個都帶有一個具有相同ID的按鈕。
2.I已膨脹他們並轉換它們變成視圖
3.In R.id類只有一個int
將爲這兩個按鈕來創建。
android如何區分具有相同id的這些按鈕使用相同的資源名稱(R.id.id_name)。
該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);
從概念上講,這是一種基於路徑的查找。你應該小心地設計你的佈局,這樣纔有可能。
它知道它應該使用哪一個View
,因爲它在當前設置爲內容視圖(或充氣)的XML文件中查找View
與此特定id
。
Android採取輕鬆之路:ID不是應用程序範圍內唯一的,而是唯一的佈局範圍。
R.id.foo
的值在兩個不同版式中保持控制,其編號爲foo
。既然他們沒有爭奪唯一性,那並不重要。
光滑! android採取的非常好的方法 – Archit