android 中Xml里面的id重名问题

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

在同个一个Xml文件的中若同名了,则前一个有效,而后一个无效

 

 

情况二:在不同的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造成程序的不识别。

 

后来偶然一次错误发现,只需你 setContentView(R.layout.updatemyaddressbook);中的xml文件以及这个xml文件相关的xml文件中的 id不重复,在类中使用findViewById(R.id.Button);时,程序是不会不识别的。

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

 

转载于:https://www.cnblogs.com/lyc602/p/3880764.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值