当前位置: 首页 > news >正文

Android 开发问题:The specified child already has a parent.

  • 在 Android 开发中,应用运行时,报如下错误
java.lang.IllegalStateException: 
The specified child already has a parent. 
You must call removeView() on the child's parent first.at android.view.ViewGroup.addViewInner(ViewGroup.java:5235)at android.view.ViewGroup.addView(ViewGroup.java:5064)at android.view.ViewGroup.addView(ViewGroup.java:5004)at android.view.ViewGroup.addView(ViewGroup.java:4976)...
问题原因
The specified child already has a parent.
  1. 错误信息表明试图将一个已经有父视图的子视图添加到另一个父视图中

  2. 在 Android 中,一个视图只能有一个父视图,不能同时属于多个父视图

问题复现
ConstraintLayout main = findViewById(R.id.main);TextView tvTest = new TextView(this);tvTest.setText("test");// 第 1 次添加,正常
main.addView(tvTest);// 第 2 次添加,抛出异常
main.addView(tvTest);
# 输出结果java.lang.RuntimeException: Unable to start activity ComponentInfo{com.my.view/com.my.view.ViewProblemActivity}: 
java.lang.IllegalStateException: 
The specified child already has a parent. 
You must call removeView() on the child's parent first.
处理策略
  • 在添加视图前,先检查它是否有父视图,如果有,先移除,然后再添加
ConstraintLayout main = findViewById(R.id.main);TextView tvTest = new TextView(this);tvTest.setText("test");// 第 1 次添加
if (tvTest.getParent() != null) {ViewGroup parent = (ViewGroup) tvTest.getParent();parent.removeView(tvTest);
}
main.addView(tvTest);// 第 2 次添加
if (tvTest.getParent() != null) {ViewGroup parent = (ViewGroup) tvTest.getParent();parent.removeView(tvTest);
}
main.addView(tvTest);
http://www.xdnf.cn/news/1268533.html

相关文章:

  • Visual Studio Code (v1.103) 中 GitHub Copilot 最新更新!
  • LLM表征的提取方式
  • n8n飞书webhook配置(飞书机器人、飞书bot、feishu bot)Crypto节点、js timestamp代码、Crypto node
  • 电机控制器母线电压采样芯片有哪些
  • 机器学习——模型的简单优化
  • 如何判断一个数是 2 的幂 / 3 的幂 / 4 的幂 / n 的幂 位运算 总结和思考 每日一题 C++的题解与思路
  • 机器翻译:需要了解的数学基础详解
  • 客服Agent革命:智能客服系统的技术实现与效果评估
  • Java Stream流详解:用法与常用API实战
  • Tob大客户销售面试经验
  • 数据安全与隐私保护:企业级防护策略与技术实现
  • DBSCAN聚类算法实战全解析
  • 时序分解 | MATLAB实现SAO-VMD雪消融算法优化变分模态分解
  • Python 属性描述符(描述符用法建议)
  • 词向量可视化:用TensorBoard或PCA探索词向量空间
  • RecyclerView 中 ViewHolder
  • Datawhale+AI夏令营_让AI读懂财报PDF task2深入赛题笔记
  • 学习Java的Day28
  • 常用信号深度解析(SIGINT、SIGPIPE、SIGALRM、SIGTERM等)
  • Android 锁屏图标的大小修改
  • 线上排查问题的一般流程是怎么样的?
  • [激光原理与应用-207]:光学器件 - 光纤种子源激光器常用元器件
  • python---类型别名
  • 新手小白使用jQuery在实际开发中常用到的经验
  • ABP VNext + Akka.NET:高并发处理与分布式计算
  • 从 AI 到实时视频通道:基于模块化架构的低延迟直播全链路实践
  • Vuex与Pinia对比,以及技术选型
  • 《C++进阶之继承多态》【普通类/模板类的继承 + 父类子类的转换 + 继承的作用域 + 子类的默认成员函数】
  • 10.final, finally, finalize的区别
  • 【自动化运维神器Ansible】playbook自动化部署Nginx案例解析:助力从零构建高效Web服务