我有幾個不同的佈局,每個都有xml
標籤中具有相同視圖ID的孩子。getId()爲不同佈局中的類似命名視圖返回唯一值嗎?
例如,my_layout_one
包含子視圖,其編號爲view1
,my_layout_two
也是如此。
如果在view1
上調用getId()
時,getId()
會返回相同的值,而不管上述佈局中的哪一個被誇大?
我有幾個不同的佈局,每個都有xml
標籤中具有相同視圖ID的孩子。getId()爲不同佈局中的類似命名視圖返回唯一值嗎?
例如,my_layout_one
包含子視圖,其編號爲view1
,my_layout_two
也是如此。
如果在view1
上調用getId()
時,getId()
會返回相同的值,而不管上述佈局中的哪一個被誇大?
每個View
應用於它的id
在位於app/build/generated/source/r/debug/com/your/package
目錄的R.java
類中具有相應的值。
public final class R {
public static final class id {
...
public static final int view1 =0x7f0d007e;
// other view's ids
...
}
}
你不管有多少不同View
S IN不同的佈局中聲明,所有這些都將在R.java
類,假設他們在xml
佈局應用相同的ID相同的值。
View#getId()
除了返回R.java
類的值外什麼也沒做。
回答你的問題 - 是的,getId()
將返回相同的ID,無論哪些佈局被誇大。
除了azizbekian's回答我還想指出,當您在使用setContentView()
的任何活動中設置佈局時,該佈局會變得虛高,因此所有頂層視圖都會添加到該活動中。 這就是當您撥打findViewById()
時,它會從您的活動佈局中返回視圖,而不是在任何其他佈局資源文件中具有相同標識的任何其他視圖。
所以,很明顯,當你打電話給view1.getID()
它會返回view1 ID而不是view2。儘管它們具有相同的ID,但是Android系統將僅檢查view1而不檢查view2,因爲您只需要這樣做。