今天在做项目的时候,居然发现@+id 居然可以重名,而且

情况一:同一个Xml文件中的同名

在同一个Xml文件的中若同名了,则前一个有效,而后一个无效,as会报异常。如:

android:id="@+id/button"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_above="@+id/textView1"

android:layout_alignRight="@+id/textView1"

android:layout_marginBottom="58dp"

android:layout_marginRight="18dp"

android:text="Button1" />

android:id="@+id/button"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignRight="@+id/button"

android:layout_centerVertical="true"

android:text="Button2" />

前一个Button有效(即 android:text="Button1" ),后一个异常。

情况二:在不同的Xml 文件中的同名

在不同的Xml文件中若id同名了,两者都有效的。

当android的工程越来越大。xml文件越来越多时,避免不了两个xml文件中同样的组件使用同样的id名字,gen目录下的R.java文件中,有关id的声明都在id的class中,即public static final class id{};当两个xml文件中同样的组件,比如Button,有可能很多个文件中,都有id=”@+id/Button”,开始以为在Java类中引用会重复的id造成程序的不识别。

后来写个demo测试发现,只需你先setContentView(R.layout.xxx);然后使用findViewById(R.id.Button);时,程序是可以识别的。

这个问题非常地容易理解:因为在Android的框架设计中,每一个控件都隶属于一棵控件树,每个控件都被其父控件所管理与调配,而根控件是一个容器控件,所有的子控件都是构造在这个根控件之上,这样并形成了一个控件树的控件域,在这个控件域中是不允许重名的,超出了这个控件域则这些控件的ID是无效的,也就是说在容器控件中的子控件是不允许重名的,而不在同一容器控件中的两个控件重名也无所谓。

android id 重名_android 中不同的Xml中id可以重名吗?相关推荐

  1. 在springBoot中配置web.xml中配置的servlet

    第一种 web.xml (截取的需要转换的) 当拦截到 /socke t时执行该servlet <servlet><servlet-name>websocket</ser ...

  2. Tomcat中的contex.xml中添加' Loader delegate=true '的作用及意义

    原文地址:https://blog.csdn.net/ikaraide/article/details/20308031 简而言之,JVM的classloader加载继承关系分为BootstarpCl ...

  3. mysql 遍历XML_mybatis 中,mapper.xml中遍历list集合知识点

    select uid from user where uid in #{item.uid,jdbcType=VARCHAR} ORDER BY CREATE_DATE DESC ----------- ...

  4. Android中读取NFC标签卡中的ID

    场景 APP中读取NFC卡中的标签ID,作为用户的唯一标识进行登录验证. 首先需要确保手机支持NFC功能.其次具备一张NFC卡片. 读取id就是利用的读卡器模式,当把卡片靠近手机的NFC天线的时候,N ...

  5. android 图片圆角 遮罩_Android 自定义View练手Demo(一)实现圆角遮罩效果

    Android 自定义View系列文章 Android自定义View实现圆角遮罩效果 一图胜千言,有一个遮罩就会凸显出重点区域 1-1.jpg 本文通过两种方式来实现这种效果,来达到自定义View练手 ...

  6. c3p0连接池配置Spring核心配置文件中配置applicationContext.xml

    1.1 配置c3p0.properties属性文件 #c3p0连接池属性文件 # 四大基本信息 c3p0.driverClass=com.mysql.jdbc.Driver #这里需要改成你自己的数据 ...

  7. [工具-004]如何从apk中提取AndroidManifest.xml并提取相应信息

    跟上一篇类似,我们也需要对APK的一些诸如umengkey,ADkey,TalkingData进行验证,那么我们同样需要解压apk文件,然后提取其中的AndroidManifest.xml.然后解析x ...

  8. eclipse手动pom本地包_(转)如何在maven的pom.xml中添加本地jar包

    1 maven本地仓库认识 maven本地仓库中的jar目录一般分为三层:图中的1 2 3分别如下所示: 1 groupId 2 artifactId 3 version 4 jar包的依赖 如果要将 ...

  9. (转)如何在maven的pom.xml中添加本地jar包

    转载自: https://www.cnblogs.com/lixuwu/p/5855031.html 1 maven本地仓库认识 maven本地仓库中的jar目录一般分为三层:图中的1 2 3分别如下 ...

最新文章

  1. JavaScript获取浏览器、元素、屏幕的宽高尺寸
  2. C++中初始化列表的使用
  3. linux 7.4 不能转发dns_linux深度攻略学习
  4. opencv学习笔记8:类型转换
  5. 风车网上线,图片分享网站大潮将至
  6. gsonformat插件_裂墙推荐!IntelliJ IDEA 常用插件一览,让效率成为习惯
  7. Ubuntu 解决 pip 安装 lxml 出现 x86_64-linux-gnu-gcc 异常
  8. 关于C++标准库中的数据抽象
  9. 永洪BI到底有多好用?知乎大V用3000字力荐
  10. JsBarcode条形码组件封装
  11. Speedoffice(Excel)怎么把边框线条加粗
  12. 【网络安全】OSSIM平台网络日志关联分析实战
  13. [轻笔记]Juliav0.6配置jupyter
  14. matlab图片投稿,投稿时图片DPI的设置及相关心得
  15. 搜狗浏览器与IE9评测比较
  16. PPT2007将Excel图表转为图片
  17. Dx 10 与 Dx 9 的一些技术区别
  18. 找不到战网服务器ip地址,《冰封王座》战网服务器IP地址大全
  19. 半个月亮爬上来(超级女声总决选)铃声 半个月亮爬上来(超级女声...
  20. matlab实验一报告,matlab实验报告一二三

热门文章

  1. ccs dat数据 matlab,详解CCS中的.dat文件
  2. xmta温度控制仪说明书_【智能温控仪XMTA-908说明书】- 黄页88网
  3. day 06 非空约束、唯一约束、主键约束、外键约束
  4. 【神策数据面试】手撕题
  5. html5自动吸附,基于HTML5Canvas的3D渲染引擎界面以及吸附等效果的运用-
  6. Docker-- 什么是Docker和Docker的基本知识
  7. 2021手游排行前十名分享
  8. 静态代码块、构造代码块、构造函数、普通代码块的区别
  9. 机器人学习——姿态表达,ros通讯机制
  10. 鸿蒙系统支持980,稳了!鸿蒙系统升级名单再曝:至少麒麟980机型都能升级