R.java 的 Android id 冲突机制

标签 android collision

我们都知道在为 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/

相关文章:

Java 哈希集在相等时不被覆盖时的行为?

java - 如何判断两点之间是否没有任何障碍物

iphone - iPhone-解析NSMutableArray以删除对象

c++ - 二维碰撞 react

android - 播放动画时禁用屏幕上的触摸事件

android - 在低级 API 17 中获取系统日期

android - 是否可以只对应用程序的一部分使用 phonegap?

Android Studio 在真实设备上运行应用程序后添加不需要的权限

android - 如何在android中以编程方式设置声音打开和关闭

c# - 2D 粒子引擎无法处理超过 450 个粒子。为什么? (新华社)