解决The specified child already has a parent. You must call removeView() on the child's parent first问题

AlertDialog二次点击报You must call removeView() on the child's parent first错的解决方法 今天在工作中用到了自定义的Dialog,理想总是很美好的,因为在自定义Dialog和创建Dialog的过程比想象的要顺利,所呈现的效果和想象中的一致,但是正当自己沾沾自喜的时候,在第一次点击弹出Dialog之后,第二次点击程序却闪退了。一开始的喜悦瞬间消失了,痛定思痛,查看LogCat发现报错java.lang.IllegalStateException The specified child a 阅读详情

使用ViewPager的时候很容易出现这个错误:

The specified child already has a parent. You must call removeView() on the child's parent first.

 (如有错误之处,欢迎各位当街拍砖或者留言回复哦)  
  这个错误字面意思很容易理解。
  出现这个错误一般是在ViewPagerAdapter中添加View的时候出现的,官方的解决办法是:
@Override
    public void destroyItem(ViewGroup container, int position, Object object) {

        container.removeView((View) object);

    }


  这样就在销毁的时候将view移出,下次添加的时候就不会出现已经有parent的情况。
但是很多时候是写了,但是还是不行。



  这种一般是出现在viewpager无限轮播的时候需要不断的添加,这时候这么写已经不能解决了。
这时候就需要将destroyItem中的代码注释。在别的地方将视图删除。

  举个栗子。。
  在我们添加视图的时候(此时我添加的是ImageView),通过视图去获取其parent。然后通过判断parent中是否含有这个视图,如果有就删除掉,没有。。。

  没有就算了。。。将parent中的控件删除后就保证添加到的父容器中不会重复添加,此时就不会报错了。。。
  这只是一种方案,如果有更好的可以评论告诉我。。代码如下:

 @Override
    public Object instantiateItem(ViewGroup container, int position) {
        if (data.size() != 0) {
            ImageView imageView = data.get(position);
            ViewGroup parent = (ViewGroup) imageView.getParent();
            if (parent != null) {
                parent.removeView(imageView);
            }
            imageView.setOnClickListener(this);
            container.addView(imageView);
            return imageView;
        } else {
            return null;
        }
    }


    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
//        container.removeView(data.get(position%data.size()));
//        container.removeView(data.get(position));
//        container.removeView((View) object);
//        if (position!=0&&position%data.size()==0){
//                container.removeAllViews();
//        }
    }



  当然如果你尝试以上方案都没有解决。。。

  欢迎一起讨论Android开发的各种知识。共同成长共同进步。我先改bug去了。。。哭哭哭
  












【WRF编译-Lab1】使用自动脚本编译WRF:错误总结 WRF编译过程及错误总结 阅读详情

相关推荐

告别黑盒:深入解析西部数据UFS芯片的44个SMART健康参数(附高通XBL读取源码)

本文深入解析西部数据UFS芯片的44个SMART健康参数,结合高通XBL启动加载层源码,提供了一套完整的健康状态诊断方法论。从SCSI命令层封装到数据结构映射,详细介绍了如何在高通平台早期启动阶段捕获UFS健康状态,帮助工程师实现预测性维护。

weixin_30600197的博客 427

java.lang.IllegalStateException:The specified child already has a parent异常万能解决方案:removeView

java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 这个异常让人很头疼,你必须要在parent上调用removeView移除掉你要重复使用的这个view才可以,有时候不知道你的view被...

侠亦狐的博客 1万+

准静态电磁场

叠加法 缺点:对于连续分布的电荷,叠加法的计算比较困难 虚位移法 概念 广义坐标:确实系统中导体形状、尺寸与位置的一组独立几何量。 广义力:企图改变某一广义坐标的力。 功:广义力乘上由它引起的广义坐标的改变量。 公式 ...

qq_35912930的博客 1860

View系列:View问题:The specified child already has a parent. You must call removeView() on the child‘s pa

The specified child already has a parent. You must call removeView() on the child's parent first.

C++ JAVA的专栏 2985

深入解析TI C2000 ePWM模块:峰值电流模式Buck与LLC谐振变换器实战配置

脉宽调制(PWM)技术是电力电子与数字电源控制的核心,它通过调节开关信号的占空比或频率,实现对功率变换器输出电压、电流的精确控制。其基本原理是利用微控制器内部的定时器和比较器,生成具有特定时序的方波信号,驱动功率开关器件。这项技术的核心价值在于将复杂的模拟控制环路数字化,从而提升系统的可控性、灵活性和可靠性。在电机驱动、不间断电源(UPS)、服务器电源和新能源逆变器等广泛应用场景中,PWM技术都是实现高效能量转换的基石。本文聚焦于德州仪器(TI)C2000系列微控制器中功能强大的增强型PWM(ePWM)模块

weixin_30410119的博客 344

告别PXE!用iPXE在CentOS 8.5上搭建一个能同时装Win11和Linux的万能网络启动盘

本文详细介绍了如何在CentOS 8.5上使用iPXE搭建支持Windows 11和Linux双系统部署的全能网络启动盘。通过对比传统PXE的局限性,展示了iPXE在HTTP协议支持、多架构适配和智能脚本方面的优势,提供从环境准备、服务配置到智能菜单开发的完整解决方案,显著提升系统部署效率。

weixin_29278805的博客 265

安卓java.lang.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.。经过多次调试及网上查找相关资料,终于弄明白是咋回事,现记录如下: 首先跟大家讲解一下为...

weixin_33881041的博客 697

以太网测试用例(光模块线缆、网卡类设备、交换类设备)

LeCroy力科网络测试相关的测试用例分享:光模块/DAC/ACC/AEC/AOC测试,网卡类产品测试/GPU/DPU/SmartNIC,交换类产品测试。涉及物理层的FEC,SKEW,Tx/Rx Taps和Layer23层的网络性能测试/吞吐量延迟抖动丢包率背靠背性能,以及RDMA带状况的网络协议分析。同步提供400G高速的以太网的损伤,提供定量,可重复的负面压力测试环境。

专注有线以太网性能测试--丹麦信雅纳网络(Xena Networks) 1993

The specified child already has a parent. You must call removeView() on the child‘s parent first

java.lang.IllegalStateException:The specified child already has a parent. You must call removeView() on the child’s parent first 异常描述:非法状态异常,特定的 child 已经有一个 parent 了,你必须在这个 parent 中首先调用 removeView() 方法,才能继续你的内容。 一个视图只能添加到一个布局中,如果重复添加,或者再添加到另外一个视图中,会报这个异常.

Neo的博客 1818

​苹果开发者账号推送证书配置详细指南​

推送证书的配置是iOS应用实现消息推送的核心步骤。通过生成证书、配置描述文件、集成到服务器三大环节,开发者可快速为App启用APNs服务。建议优先使用更灵活的APNs Auth Key替代传统证书,以减少维护成本。确保拥有有效的苹果开发者账号(个人/公司账号),年费已缴纳。

2326

【大数据技术干货】(还不懂数仓,数据中心?看这一篇就够了!)在实际的开发生产中,让你了解企业级数据中心整体架构(DB+ETL+ODS+DW+DM)的各个层次的过程详解,数据联系及功能区分

一 企业级数据中心架构 数据仓库的整体架构,各个系统的元数据通过ETL同步到操作性数据仓库ODS中,对ODS数据进行面向主题域建模形成DW(数据仓库),DM是针对某一个业务领域建立模型,具体用户(决策层)查看DM生成的报表。 二 DB 三 ETL(Extract-Transform-Load) ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。 ETL是BI项目重要的一个环节。 通常情况下,在BI项目中ET

liuchunhang的博客 1289

The specified child already has a parent. You must call removeView() on the child's parent first.

之前在做ViewPage+Fragment 横竖屏切换时 遇到报错了,搞了好久才解决,所以记录一下: The specified child already has a parent. You must call removeView() on the child’s parent first. 报错信息如下: java.lang.IllegalStateException: The speci...

冬无雪的博客 2万+

YOLOv11改进 | 主干/Backbone篇 | 轻量级移动端网络ShuffleNetV2(附代码+修改教程)

本文给大家带来的改进内容是ShuffleNetV2,这是一种为移动设备设计的高效CNN架构。其在ShuffleNetV1的基础上强调除了FLOPs之外,还应考虑速度、内存访问成本和平台特性。(我在YOLOv11n上修改该主干降低了GFLOPs,但是参数量还是有一定上涨,其非常适合轻量化的读者来使用,同时精度也有一定程度的上涨)。本文通过介绍其主要框架原理,然后教你如何添加该网络结构到网络模型中。

Snu77的博客 3387

The specified child already has a parent. You must call removeView() on the child's parent first.解决办

1、如果@Override public Object instantiateItem(ViewGroup container, int position) { // TODO Auto-generated method stub View channelView = LayoutInflater.from(mContext).inflate( R.layout.store_vi

mcy478643968的专栏 1万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

android The specified child already has a parent. You must call removeView() on the child's parent f

java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.这种问题普遍出现在动态添加View时也就是非法状态异常,它说这个特定的child已经有一个parent了,你必须在这个parent中首先调用

iszengmh的博客 934

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

setView的AlertDialog在受到二次点击后出错

错误报告: 10-21 13:11:16.009: E/AndroidRuntime(27937): FATAL EXCEPTION: main10-21 13:11:16.009: E/AndroidRuntime(27937): java.lang.IllegalStateException: The specified child already has a parent. Yo...

weixin_30871701的博客 265

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

android 布局右边视图没了,Android开发中,请问当在一个视图中addView另一个布局视图时为什么报错?...

Android开发中,我在一个视图中addView另一个布局视图(该视图通过inflate加载获得,其中root为null即没有附加parent视图),为什么还是会报错误:The specified child already has a parent. You must call removeView() on the child's parent first.相关代码如下:fragment.c...

weixin_33632413的博客 202

The specified child already has a parent. You must call removeView() on the child's parent first.问解决

今天学习android fragments时,遇到一个运行时错误 The specified child already has a parent. You must call removeView() on the child's parent first. 源码如下:MainActivity.java  目的是根据屏幕尺寸的变化加载不同的fragmentpackage com.exam

dengchendeng的专栏 1175

二、The specified child already has a parent. You must call removeView() on the child's parent first.

我写了一个应用程序,需要竖屏和横屏显示不同的布局 if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { setNormalHorizontalView(); } else if (this.getResources().getConfiguratio

xiaoxiaobian3310903的专栏 2933

问题:The specified child already has a parent. You must call removeView() on the child's parent first.

Dialog中使用自定义view报错。第一次点击弹出对话框按钮没有问题,第二次点击则会报错: AndroidRuntime: FATAL EXCEPTION: main Process: com.dingding.jikecontacts, PID: 3809 java.lang.IllegalStateException: The specified child already has

丁丁的专栏 1145

The specified child already has a parent. You must call removeView() on the child‘s parent first.

原文:https://blog.csdn.net/lxd_love_lgc/article/details/105650993之前在做ViewPage+Fragment 横竖屏切换时 遇到报错了,搞了好久才解决,所以记录一下: The specified child already has a parent. You must call removeView() on the child’s parent first. 报错信息如下: java.lang.IllegalStateException.

az44yao的专栏 1580

BUG:The specified child already has a parent. You must call removeView() on the child's parent first

在使用ViewPager + Fragment 的时候报错:The specified child already has a parent. You must call removeView() on the child’s parent first.在解释这个问题之前我们需要了解ViewPager的预加载机制。 ViewPager的预加载机制 ViewPager会预加载当前页面的左右

Java技术博客,不再更新Android内容 2447

[已]The specified child already has a parent. You must call removeView() on the child's parent first.

二级PopupWindow 在执行的时候报错: The specified child already has a parent. You must call removeView() on the child's parent first. 原因: 在第二级的setContextView 的时候使用了第一级的listView, 解决办法: 在第二级的setContext

Kodulf的专栏 2014

viewpage:The specified child already has a parent. " + "You must call removeView() on the child's pa

1:问题描述:The specified child already has a parent. " +"You must call removeView() on the child's parent first. 我们都知道使用viewpager需要用到适配器pageradapter 其中方法  @Override   public Object instantiateItem(View

吴蕴强的博客 1266
冀超鹏
博客等级 码龄9年 0粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值