The specified child already has a parent错误

简介:

10-05 23:39:48.187: E/AndroidRuntime(12854): Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
10-05 23:39:48.187: E/AndroidRuntime(12854): at android.view.ViewGroup.addViewInner(ViewGroup.java:1976)
10-05 23:39:48.187: E/AndroidRuntime(12854): at android.view.ViewGroup.addView(ViewGroup.java:1871)
10-05 23:39:48.187: E/AndroidRuntime(12854): at android.view.ViewGroup.addView(ViewGroup.java:1828)
10-05 23:39:48.187: E/AndroidRuntime(12854): at android.view.ViewGroup.addView(ViewGroup.java:1808)
10-05 23:39:48.187: E/AndroidRuntime(12854): at com.solar.WaterLevelActivity.InitUnitTimeLowestWaterLevel(WaterLevelActivity.java:49)
10-05 23:39:48.187: E/AndroidRuntime(12854): at com.solar.WaterLevelActivity.InitView(WaterLevelActivity.java:30)
10-05 23:39:48.187: E/AndroidRuntime(12854): at com.solar.WaterLevelActivity.onCreate(WaterLevelActivity.java:25)
10-05 23:39:48.187: E/AndroidRuntime(12854): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-05 23:39:48.187: E/AndroidRuntime(12854): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
10-05 23:39:48.187: E/AndroidRuntime(12854): ... 11 more

补充说明InitUnitTimeLowestWaterLevel()在OnCreate函数中被调用,用来初始化界面。实现的效果是动态添加界面。

下面是出错的代码

复制代码
1     private void InitUnitTimeLowestWaterLevel() {
2         LinearLayout listMachines = (LinearLayout) findViewById(R.id.water_level_page_water_level_setting);
3         LayoutInflater inflater = LayoutInflater.from(WaterLevelActivity.this);
4         View tlWaterLevelInfo = inflater.inflate(R.layout.unit_time_water_level_item, null);
5         listMachines.addView(tlWaterLevelInfo);
6         listMachines.addView(tlWaterLevelInfo);        //这个地方出错了。
7     }
复制代码

错误的原因:通过LayoutInflater实例化的一个布局(View)。被重复添加了两次。而一个View只能有一个父控件。当第二次添加的时候,又要改变这个控件的父控件(虽然是同一个父控件,但是也要通过改变该View的父控件来实现)。运行时又不允许一个有父控件的子控件在有了一个父控件时,改变他的父控件。

解决方案:重新用布局文件实例化一个子控件,再添加到父控件上。


作者:kissazi2 
出处:http://www.cnblogs.com/kissazi2/ 
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载:http://www.cnblogs.com/kissazi2/archive/2012/10/05/2712664.html

目录
相关文章
|
10月前
|
存储 前端开发 JavaScript
深入理解 ECMAScript 2024 新特性:Promise.withResolvers
ECMAScript 2024 引入了 `Promise.withResolvers`,简化了手动创建 `Promise` 时管理 `resolve` 和 `reject` 的复杂性。本文详细介绍其设计背景、使用方式,并通过多个实际案例展示其优势。该方法减少了代码冗余和潜在错误,使异步任务管理更加直观和简洁。未来,这一特性有望为前端开发带来更多灵活性和便利性。
233 37
|
12月前
|
监控 安全
团队冲突是团队协作中常见的现象
团队冲突是团队协作中常见的现象
366 5
|
存储 监控 安全
常用的网络安全工具有哪些?
【8月更文挑战第7天】
847 4
|
存储 边缘计算 安全
未来云平台发展趋势及挑战
在数字化转型的浪潮下,云平台作为支撑大规模数据处理与应用部署的基础设施,正成为企业和个人创新发展的关键。本文将探讨未来云平台发展的趋势和面临的挑战,包括边缘计算、多云环境、安全性等方面的问题,并提出应对之策。
357 26
|
人工智能 搜索推荐 API
智能家居:AI让生活更便捷
【7月更文第18天】在如今这个科技飞速发展的时代,智能家居已经不再是科幻电影里的桥段,而是真真切切走进了千家万户,让我们的日常生活变得既酷炫又贴心。AI,这个听起来有点神秘的词,其实正在悄悄改变我们的小日子,让“智能”成为家庭生活的新常态。下面,我们就来聊聊AI在智能家居中的几个应用场景,看看它是如何让生活变得更加便捷的。
370 1
|
JSON Go 数据格式
Golang 对象深拷贝的方案以及性能比较
文章讨论了Golang中实现对象深拷贝的三种方案:gob序列化反序列化、json序列化反序列化和定制化拷贝,并进行了性能比较,结论是在性能要求高时推荐使用定制化拷贝,性能要求不高时可以使用gob方法,而json方法在性能和代码复杂度之间提供了一个折中方案。
312 0
|
机器学习/深度学习 数据可视化 Python
数据分享|Python用偏最小二乘回归Partial Least Squares,PLS分析桃子近红外光谱数据可视化
数据分享|Python用偏最小二乘回归Partial Least Squares,PLS分析桃子近红外光谱数据可视化
|
算法 C语言 芯片
DSP芯片分类与应用
DSP芯片分类与应用
454 0
|
弹性计算 大数据 测试技术
阿里云服务器租用费用价格表(2024新版报价)
2024年阿里云服务器租用费用价格表更新,云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、ECS u1实例2核4G、5M固定带宽、80G ESSD Entry盘优惠价格199元一年,轻量应用服务器2核2G3M带宽轻量服务器一年61元、2核4G4M带宽轻量服务器一年165元12个月、2核4G服务器30元3个月,幻兽帕鲁4核16G和8核32G服务器配置,云服务器ECS可以选择经济型e实例、通用算力u1实例、ECS计算型c7、通用型g7、c8i、g8i等企业级实例规格。今天分享阿里云服务器租用费用最新报价:
265 0