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

时间: 2025-01-26 07:17:38

The specified child already has a parent错误的相关文章

The specified child already has a parent.

问题描述 The specified child already has a parent. 求各位大神帮我看看,我这段程序哪里出现了父类? final SimpleAdapter mSchedule = new SimpleAdapter(this, grouplist, R.layout.groupinfo, new String[]{"groupinfo", "groupinfotext"}, new int[]{R.id.groupinfos, R.id.g

Android异常:The specified child already has a parent.

[Android异常]The specified child already has a parent. You must call removeView() on the child's parent first. 错误信息: Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent

java,麻烦详细解释下怎么继承的?为什么是‘ Parent Child’ ,而不是 ‘Parent Parent’????或其他???/

问题描述 public class Test { public static void main(String[] args) { Parent p = new Child(); System.out.println(p.name); System.out.println(p.get()); } } class Parent { String name = "Parent"; public String get() { return name; } } class Child exte

android 中的Fragment,写了一个下拉框,总是报: The specified child already has a parent.

问题描述 SuppressLint("NewApi")publicclassLoginFragmentextendsFragmentimplementsOnClickListener{EditTextsever_name;EditTextuser_name;EditTexttext_pass;MyHelperhelper;SQLiteDatabasedb;//保存登录过用户账号的下拉框PopupWindowpopView=null;ArrayList<SeverInfor>

You must call removeView() on the child&amp;#39;s parent first

首先,Android中的Fragment是什么?http://developer.android.com/guide/topics/fundamentals/fragments.html场景: 现有两个Fragment(e.g:LoginFragment.HomeFragment)需要在Android程序运行的时候进行动态加载.切换,这种情况下,比较容器出现的一个问题就是: // java.lang.IllegalStateException: The specified child alrea

关于shared cursor,parent cursor,child cursor

转自: http://space.itpub.net/50897/viewspace-584304 近日有朋友问到 cursor 如何确定是否sharable的,Metalink Note 296377.1 说得比较好,简单注释如下: 1. shared SQL,parent cursor,child cursor 概念:   所有SQL都是Oracle暗式共享的(implicitly sharable).当用户A发出一条SQL后,Oracle会根据SQL文本内容生成hash value(10g

图片-关于学习《第一行代码》中发现的问题,不敢说是错误,应该是郭霖大神笔误。麻烦各位大神来教训晚辈。。。

问题描述 关于学习<第一行代码>中发现的问题,不敢说是错误,应该是郭霖大神笔误.麻烦各位大神来教训晚辈... _第一处问题:在fragment一章里关于动态加载fragment部分中,要添加的fragment类的代码如下 public class Fragment_3 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedIn

InnoDB 中文参考手册 --- 4 建立 InnoDB 表

参考|参考手册|中文 4 建立 InnoDB 表假设你已以 mysql test 命令方式运行了 MySQL 客户端程序.为了建立一个 InnoDB 格式的表你必须在 SQL 命令中指定 TYPE = InnoDB : CREATE TABLE CUSTOMER (A INT, B CHAR (20), INDEX (A)) TYPE = InnoDB; 这个 SQL 命令将在 my.cnf 中设定的 InnoDB 数据文件中创建一个表和一个列 A 的索引,同时将在 MySQL 数据目录下的 t

嵌入式iframe子页面与父页面js通信的方法

 这篇文章主要介绍了嵌入式iframe子页面与父页面js通信的方法,实例分析了嵌入式iframe子页面与父页面js通信的常用技巧,非常具有实用价值,需要的朋友可以参考下     本文实例讲述了嵌入式iframe子页面与父页面js通信的方法.分享给大家供大家参考.具体分析如下: iframe框架中的页面与主页面之间的通信方式根据iframe中src属性是同域链接还是跨域链接,有明显不同的通信方式,同域下的数据交换和DOM元素互访就简单的多了,而跨域的则需要一些巧妙的方式来实现通信. 一.同域下父子