XML视图提示Duplicate resource id,id重复引用且XML修改不生效
问题原因与解决方案
问题现象
为XML视图设置id后,在Activity或Fragment中引用该id时出现重复引用的情况,两处引用指向同一个视图,且XML文件的所有修改都无法在代码中生效。
解决方案
R类是Android编译阶段自动生成的id索引文件,构建缓存异常、布局id冲突都会导致索引和实际视图不匹配,可按以下步骤排查修复:
- 清理构建缓存
这是该问题最高发的诱因,按顺序执行操作:- 点击顶部菜单栏
Build -> Clean Project等待清理完成 - 再点击
Build -> Rebuild Project重新构建项目 - 如果仍未解决,点击
File -> Invalidate Caches...,勾选「Clear file system cache and local history」后重启IDE
- 点击顶部菜单栏
- 排查布局与id冲突
- 确认Activity中
setContentView()、Fragment中inflater.inflate()绑定的布局文件,就是你修改的目标XML文件,避免修改错布局 - 检查是否存在多个同名布局文件(比如不同资源限定符文件夹下的同名布局),如果有确保对应布局内的id定义符合预期
- 排查当前布局树(包括通过
<include>、<merge>引入的子布局)内是否有重复id,同一个视图树内的id必须唯一
- 确认Activity中
- 绑定类缓存清理(适用于使用View Binding/ButterKnife的场景)
- 如果使用View Binding,手动删除项目根目录下的
build文件夹、对应module下的build文件夹后重新构建 - 如果使用ButterKnife,检查注解配置是否正确,排查混淆规则是否误处理了id相关资源
- 如果使用View Binding,手动删除项目根目录下的
内容的提问来源于stack exchange,提问作者Parth Anjaria
相关产品推荐
相关产品推荐


