Android IllegalStateException: The specified child already has a parent问题解决办法

最近遇到一个很让人头疼的问题,使用viewpager动态添加页面或者删除页面时出现了问题(java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child‘s parent first),在stackoverflow上找到了解决办法。(http://stackoverflow.com/questions/22936886/java-lang-illegalstateexception-while-using-viewpager-in-android

原文是:

the problem is that in your adapters method instantiateItem
you call container.addView(v);

but every View can have only one parent,
so it can be added only one time to a container via addView(...).

When you open the popup the first time, everything works, because v
doesn‘t have a parent that time. But when you open your popupwinow the second time,
it adds the view again to the container. That cerates the error.

Try to destroy the view if you close the popup view or remove all children views from it with
container.removeAllViews()

解决办法是在instantiateItem中使用如下方式:

ViewGroup parent = (ViewGroup) v.getParent();

if (parent != null) {

parent.removeAllViews();

}

container.addView(v);
中间很多次尝试已经接近答案,但是习惯性的去把v.getParent()强制转化为view,view没有removeView()方法,以至于放弃了这种方法,以后要多思考,想到的解决办法如果完全不是自己想要的结果,一定要再检查一遍,很有可能是某个小地方没注意。

时间: 2024-12-06 15:11:38

Android IllegalStateException: The specified child already has a parent问题解决办法的相关文章

java.lang.IllegalStateException: The specified child already has a parent. You must call removeView

?? java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 在android代码中假设出现此异常,说明在同一个布局中加入了同样的组件实例.应该创建不同的实例组件,并将其加入到布局其中.

Caused by: java.lang.IllegalStateException: The specified child already has a parent. You

ViewPager 报错:Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 一中是removeView这个问题很常见的,具体解决方法就不谈了,另外一种是情况如下: adapter=new ViewPagerAdapter(Views); views>>  view

android Fragment java.lang.IllegalStateException:The specified child already has a parent.

在做项目的时候 ,做到了一个Activity里面有两个Tab切换,每一个Tab是一个Fragment展示内容,当两个Tab来回切换的时候,报了一个错误 经过查找原因,原来是Fragment中OnCreateView()的方法调用错了: 正确的方法应该是: 查阅多方资料得知,我们都LayoutInflater的使用存在误区 我们最常用的便是 LayoutInflater的inflate方法,这个方法重载了四种调用方式,分别为: 1. public View inflate(int resource

Android中ListView的item按钮监听错乱问题解决办法

在开发中经常会遇到这样的问题,做了一个列表,给列表的每一项添加了按钮监听事件,但是在列表的数据很多的时候经常会出现点击后错乱的问题.对于这种问题,我们在程序中可能都有自己的解决办法,但是你也许第一次发现这个问题的时候会跟我之前一样手足无措. 那么现在我们可以分析一下这种问题的根本原因. 首先,我们来看一下一个出错的BaseAdapter. package com.example.listdelectdemo; import java.util.ArrayList; import android.

android之Android中的SQL查询语句LIKE绑定参数问题解决办法(sqlite数据库)

由于考虑到数据库的安全性,不被轻易SQL注入,执行查询语句时,一般不使用直接拼接的语句,而是使用参数传递的方法.然后在使用参数传递的方法中时,发现当使用like方式查询数据时,很容易出现一个问题. 错误案例: 复制代码代码如下: String myname = "abc";String sql = "select * from mytable where name like '?%'";Cursor cursor = db.rawQuery(sql, new Str

关于异常“The specified child already has a parent. You

在android开发过程中,有时会在不同情况下遇到同种问题: [java] view plaincopy java.lang.IllegalStateException The specified child already has a parent. You must call removeView() on the child's parent first. 也就是非法状态异常,它说这个特定的child已经有一个parent了,你必须在这个parent中首先调用removeView()方法,

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.Vie

怎样实现动态加入布局文件(避免 The specified child already has a parent的问题)

首先扯点别的:我应经连续上了两个星期的班了,今天星期一.是第三个周.这个班上的也是没谁了.近期老是腰疼. 预计是累了.近期也没跑步.今天下班继续跑起. 这篇文章讲一讲怎样在一个布局文件里动态加在一个布局文件. 避免出现The specified child already has a parent. You must call removeView() on the child's parent first.的问题. 先看一看效果再说. 接下来是实现过程 首先是 activity_add_vie

如何实现动态添加布局文件(避免 The specified child already has a parent的问题)

首先扯点别的:我应经连续上了两个星期的班了,今天星期一.是第三个周.这个班上的也是没谁了.最近老是腰疼.估计是累了.最近也没跑步.今天下班继续跑起. 这篇文章讲一讲如何在一个布局文件中动态加在一个布局文件.避免出现The specified child already has a parent. You must call removeView() on the child's parent first.的问题.先看一看效果再说. 接下来是实现过程 首先是 activity_add_view.x