我有几个不同的布局,每个布局都有xml
标记中具有相同视图ID的子项。
例如,my_layout_one
包含ID为view1
的子视图,my_layout_two
也是如此。
如果在view1
上调用,getId()
会返回相同的值,无论上述哪种布局被夸大了吗?
答案 0 :(得分:1)
应用了View
的每个id
在R.java
类中都有一个对应的值,位于app/build/generated/source/r/debug/com/your/package
目录。
public final class R {
public static final class id {
...
public static final int view1 =0x7f0d007e;
// other view's ids
...
}
}
无论您在不同的布局中声明了多少个View
,所有这些R.java
类在xml
类中具有相同的值,假设它们在R.java
布局中应用了相同的ID
View#getId()
除了从getId()
类返回值外什么都不做。
回答你的问题 - 是的,{{1}}将返回相同的ID,无论这些布局中的哪一个被夸大。
答案 1 :(得分:0)
除了azizbekian's回答之外,我还想指出,当您使用setContentView()
在任何活动中设置布局时,该布局会膨胀,因此所有顶级视图都会添加到活动。
这就是当您致电findViewById()
时,它会从您的活动布局中返回视图,而不会在任何其他布局资源文件中返回任何其他具有相同ID的视图。
所以,显然当你打电话给view1.getID()
时,它会返回view1 ID而不是view2。虽然它们具有相同的id,但android系统将只检查view1而不是view2,因为你只是要求它。