You must call removeView() on the child's parent first解决办法

2020-02-07 23:46:44

出现这样的情况最多是发生在recyclerView中,holder复用的过程中,多次添加view,第一次添加的时候view有了父类了,可能就是复用引起的。

我是发生在给recyclerView添加广告view的时候发生的。

解决办法:

if(view.getParent()!=null){
    ((ViewGroup) view.getParent()).removeView(view);
}


参看 :

本来很简单的一个功能,但是总是报The specified child already has a parent. You must call removeView() on the child's parent first.网上也找了很多的资料,大致都是说了原理.确没有说怎么解决.原理我就不说了,这个大家应该都知道原因.就是两个view共用一个ParentView.不明白的自己可以百度下.下面贴下源码.其实就是很简单的一句代码.加载完子View之后记得把它移除就好了.

  • 2018-10-20 20:44:03

    RecycleView4种定位滚动方式演示

    将RecyclerView滑动到指定位置,或者检索RecyclerView的某一项(各个项的高度不确定),然后定位滚动这到一项,将它显示。 下面就讲解4种RecyclerView定位滚动

  • 2018-10-21 22:29:24

    android ScollView 嵌套 WebView 底部空白,高度无法自适应解决

    最近要做一个页面,需要 ScrollView 嵌套 WebView,怎么嵌套,怎么解决焦点和 touch 事件冲突,网上一大堆,这里就不赘述了,但是发现 WebView 从一个高度很高的网页加载一个高度很低的网页的时候,高度无法自适应了,造成底部会有一大片的空白,解决方案找到了挺多,描述一下:

  • 2018-10-24 15:24:54

    getcachedir和getexternalcachedir的区别

    应用程序在运行的过程中如果需要向手机上保存数据,一般是把数据保存在SDcard中的。 大部分应用是直接在SDCard的根目录下创建一个文件夹,然后把数据保存在该文件夹中。 这样当该应用被卸载后,这些数据还保留在SDCard中,留下了垃圾数据。 如果你想让你的应用被卸载后,与该应用相关的数据也清除掉,该怎么办呢?