Android 中Xml里面的id重名问题

android xml文件操作 android xml文件操作,txt文件操作,md5加密,百度地图两点之间距离计算 立即下载

在Android的xml中@+id 可以重名,这里"+"的含义是:如果没有定义id则可以定义该id,如果定义过,则为空。

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

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

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <Button    
  2.     android:id="@+id/button"    
  3.     android:layout_width="wrap_content"    
  4.     android:layout_height="wrap_content"    
  5.     android:layout_above="@+id/textView1"    
  6.     android:layout_alignRight="@+id/textView1"    
  7.     android:layout_marginBottom="58dp"    
  8.     android:layout_marginRight="18dp"    
  9.     android:text="Button1" />    
  10.     
  11. <Button    
  12.     android:id="@+id/button"    
  13.     android:layout_width="wrap_content"    
  14.     android:layout_height="wrap_content"    
  15.     android:layout_alignRight="@+id/button"    
  16.     android:layout_centerVertical="true"    
  17.     android:text="Button2" />  


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

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

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

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

在不同的layout文件下(通过setContentView设置),可以通过findViewBy(id)找到该layout文件下的相应控件,不会发生冲突。

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


原文地址:点击打开链




android 通过名字得到资源ID 通过资源名称 获得资源的id package com.example.activitylibrary; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class LibraryActivity extends Activity { String msg = "我是来自Jar中的Activity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(MResource.getIdByName(getApplication(), "layout", "activity_main")); TextView mTextView = (TextView) findViewById(MResource.getIdByName(getApplication(), "id", "textView1")); mTextView.setText(msg); Button mButton = (Button) findViewById(MResource.getIdByName(getApplication(), "id", "button1")); mButton.setText(msg); mButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getApplication(), msg, Toast.LENGTH_SHORT).show(); } }); } } 立即下载

相关推荐

从零开始:HLW8110电能计量IC的硬件设计与软件调试全攻略

本文详细介绍了HLW8110电能计量IC的硬件设计与软件调试全流程,涵盖核心特性、抗干扰设计、UART通信协议及校准方法。通过实战案例和优化技巧,帮助工程师快速掌握高精度交流测量技术,适用于智能插座、充电桩等应用场景。

p5l2m9n4o6q的博客 578

Android 不同XML相同ID名怎么输出到Apk中

哇唔

Is_Poson的博客 345

TPAMI审稿人关注什么

写在开头:被tpami接收大概是每个cs er最开心的事情吧!今天阅读TPAMI的文章时,发现有扩刊的文章,也有不是扩刊的文章,那么这两类文章哪个更容易被接收呢?

carlous0的专栏 1687

android id 重名_android - 解决“应用自定义权限重名”

背景现场的开发今天跟我说,测试包装不上!报错“应用自定义权限重名”!!!网上百度下关键字,发现魅族手机有这个毛病,顺藤摸瓜:“http://bbs.flyme.cn/thread-302692-1-1.html”魅族的叫法是“应用自定义权限重名”,而其他的叫法一般是“应用权限冲突安装失败”原因简单点来说就是:手机上已经装了A应用,你现在要装B应用,然而A和B都用了一个共同的权限但是他俩签名不一致,...

weixin_39708708的博客 604

Spring AI + RAG 构建电商智能客服:从 PDF 文档解析到精准问答的全链路实战

核心框架:向量数据库:- PostgreSQL + pgvector (生产推荐)- Redis Stack (轻量级方案)- ChromaDB (快速原型)文档解析:- Apache PDFBox: PDF 文本提取- Spring AI Document Readers: 结构化解析大模型:- 阿里云百炼 (DashScope)- 本地部署:Qwen/ChatGLM/*** 电商领域实体*/@Data@Builder@ToString/*** 商品类型。

一起修行,不孤单。这里有编程语言、开发工具、学习方法论和踩坑笔记。用简单的话说复杂的事,陪你从小白到进阶。周更干货,欢迎一起成长! 383

Ubuntu22.04通过DKMS包安装Intel WiFi系列适配器(网卡驱动)

Ubuntu安装Intel WiFi系列适配器(网卡驱动)

lu_linux的博客 2603

Android XML 布局基础(二)ID 用法

任何 View 对象均可拥有与之关联的整型 ID,用于在结构树中对 View 对象进行唯一标识。编译应用后,系统会以整型形式引用此 ID,但在布局 XML 文件中,系统通常会以字符串的形式在 id 属性中指定该 ID。这是所有 View 对象共有的 XML 属性(由 View 类定义),并且会经常使用该属性。 ID 字符串名称,在同一布局中必须是唯一的,不能重名,不同布局中可以同名。 XML 标记内部的 ID 语法: android:id="@+id/dzm_test" 命名格式:/ 后面..

卡尔特斯 2734

【已解决】App unavailable Unfortunately, Claude is only available in certain countries and regions

App unavailable Unfortunately, Claude is only available in certain countries and regions right now. We will soon publish a list of supported locations on our website.

weixin_43941438的博客 3万+

软件android_id,Android中@id和@+id及@android:id的区别介绍

前言昨天突然有新来的同事问我这个@id 和@+id 的区别 ,为什么 我们的项目都是@id 自己新增的ui 使用的@+id这里说下我的简单的回复项目是维护的之前的是为了统一管理使用了@id 方便修改 ,因为在ids.xml 里面有引用,@+id 是新增了,没有那样写,感觉有点麻烦,不过为了统一最后自己又修改为了@id,可能这些说的有些模糊 ,下面是自己整理的一些知识,方便查找首先我们需要知道我们...

weixin_42703843的博客 2313

什么是Merkle树?用“文件柜”类比理解区块链的核心技术

Merkle树是一种用于区块链的数据结构,像一个高效的“文件柜”,用于存储和验证大量交易数据。比特币通过Merkle树将交易哈希组织成树状结构,层层汇总,最终生成一个唯一的根哈希,存储在区块头中。这种设计大幅减少数据存储和验证成本,支持快速校验交易的完整性和存在性。Merkle树通过密码学保证数据不可篡改,广泛应用于比特币、区块链及其他分布式系统。它的优势在于高效、轻量和安全,尤其适合轻节点验证和数据同步。理解Merkle树就像掌握区块链的“索引秘籍”,是Web3世界的关键技术。

在路上的专栏 1193

【工具使用】Keil常用的调试操作整理介绍

2、当选择了非0级优化时,调试可能会变得困难,具体表现在断点调试。该按钮是在进入了函数单步调试的时候,有时候你可能不必再执行该函数的剩余部分了,通过该按钮就直接一步执行完函数余下的部分,并跳出函数,回到函数被调用的置。:如果是在C语言窗口中,则是按单条语句执行,与单步调试不同的是,遇到函数不会进入函数内部,而是直接全速运行函数,并跳到下一条语句。但我的Keil软件中无法显示这个视图,并且通过修改系统试图,调试时,点击打开系统视图发生了闪退的现象,目前能想到的原因是:重新安装Keil,安装最新版本。

MEYOU_Cc 不吃香菜! 1万+

android 中Xml里面的id重名问题

From: http://blog.youkuaiyun.com/luckyjda/article/details/8548127 今天在做项目的时候,居然发现@+id 居然可以重名,而且程序还不会报错。郁闷了,这到底怎么回事呢?经过google 和百度之后,才有所了解。 情况一:同个一个Xml文件中的同名 在同个一个Xml文件的中若同名了,则前一个有效,而后一个无效,即后一个Null掉。如:

fyfcauc的专栏 752

SAE ARP 4761A内容详解

SAE ARP 4761A主要为民用航空系统及设备的安全评估提供指南,帮助制造商和设计者满足FAA的FAR 25.1309等适航标准的要求。该文档旨在为航空器和航空系统设计中涉及的安全评估流程提供一个结构化的框架,并结合一系列工具和方法,如故障树分析(FTA)、依赖图分析(DD)、马尔可夫分析(MA)等,来系统地评估潜在的安全隐患。这一标准不仅适用于大型航空器的设计和评估,还可以应用于各种类型的飞行系统,如无人驾驶飞行器(UAV)和新型的电动垂直起降飞机(eVTOL)。

qq_41854911的博客 3152

android id 重名_android 中Xml里面的id重名问题

今天在做项目的时候,居然发现@+id 居然可以重名,而且情况一:同个一个Xml文件中的同名在同个一个Xml文件的中若同名了,则前一个有效,而后一个无效,即后一个Null掉。如:android:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_ab...

weixin_30270715的博客 574

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【转载】android 中Xml里面的id重名问题

转载自:http://blog.youkuaiyun.com/luckyjda/article/details/8548127  今天在做项目的时候,居然发现@+id 居然可以重名,而且程序还不会报错。郁闷了,这到底怎么回事呢?经过google 和百度之后,才有所了解。 情况一:同个一个Xml文件中的同名 在同个一个Xml文件的中若同名了,则前一个有效,而后一个无效,即后一个Nu

chenloxiaoea的博客 539

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

android+控件i+重名,android 中Xml里面的id重名问题

From: http://blog.youkuaiyun.com/luckyjda/article/details/8548127今天在做项目的时候,居然发现@+id 居然可以重名,而且程序还不会报错。郁闷了,这到底怎么回事呢?经过google 和百度之后,才有所了解。情况一:同个一个Xml文件中的同名在同个一个Xml文件的中若同名了,则前一个有效,而后一个无效,即后一个Null掉。如:android:id=...

weixin_31509753的博客 537

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Android xml文件中ID重名问题

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

火山哥的专栏 6142
上一篇: Android中Activity.this,getApplicationContext(),getBaseContext()和this详解
下一篇: android之使用get和post方式向服务器提交请求
It_BeeCoder
博客等级 码龄10年 967粉丝 238原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值