我们都知道在为 Android 生成 id 时使用
@+id/foo
Android 为我们在 R.java 中创建了一个条目,例如:
public static final class id {
public static final int foo=0x7f060005;
}
如果在不同的 xml 文件中(比如说,在两个布局中)存在名称冲突,会发生什么? @+id 机制确保我们在另一个仍然存在的情况下覆盖 id 名称,但是在 R.java 中为我们生成了哪个?
最佳答案
@+id/foo
语法将在 id 不存在或使用现有 id 时添加。
当你findViewById时,它会对你调用该方法的 View 进行操作。
因此,如果您有嵌套 View ,则每个 View 的 id 都是唯一的。
例如View1 -> View2 都有 foo。
View1.findViewById(R.id.foo)
将不同于 View2.findViewById(R.id.foo)
edit:我想主要要提的是两个布局不能有相同的 id。 有关 id 约束的更多信息:http://d.android.com/guide/topics/ui/declaring-layout.html
关于R.java 的 Android id 冲突机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2111512/