错误:

The specified child already has a parent. You must call removeView()。

解答:
这个错误非常直白,就是你viewGroup.addView(childView); 中childView已经有父View了。错误原因非常多,我主要讲下 mLayoutInflater.inflate(id, rootView, false);造成的这个错误。(该方法有两种。一种是2个參数,一种是3个參数)。

2个參数:
第一个參数:layout的XML文件id。
第二个參数:将XML文件里的根view,作为子View加入到的那个父View。也就是父View布局
 
a:假设rootView非空,方法返回值是rootView(rootView已加入xml代表的子View)。
b:假设rootView为空,方法直接返回子View(xml代表的子View)。那么XML文件里的LayoutParams就无效了。(由于LayoutParams是给该XML代表的View的父View使用。

在父View的onMeasure()中依据LayoutParams是MATCH_PARENT还是WRAP_CONTENT,来測量子View的大小。假设没有父View就不是必需了)

故用mLayoutInflater.inflate(id,
rootView)。返回的实际上是rootView,而rootView肯定已经有父布局了(DecorateView,系统生成的)。所以 rootView.addView(mLayoutInflater.inflate(id, rootView)).等价于rootView.addView(rootView).所以错了。


3个參数:
问题来了。如何修复b情况。既保留XML文件里的LayoutParams属性,又不想有方法return父View。
两步 rootView != null (是那个对象随便),第三个參数 == false;mLayoutInflater.inflate(id, rootView, false);这样就能够不attach root view。又保留LayoutParams。


Android layoutInflate.inflate 方法具体解释,removeView()错误解决的更多相关文章

  1. Android编程之LayoutInflater的inflate方法具体解释

    LayoutInflater的inflate方法,在fragment的onCreateView方法中经经常使用到: public View onCreateView(LayoutInflater in ...

  2. Android之Inflate()方法用途

    转自:http://blog.csdn.net/andypan1314/article/details/6715928 Inflate()作用就是将xml定义的一个布局找出来,但仅仅是找出来而且隐藏的 ...

  3. Android源代码下载方法具体解释

    作者:张星 相信非常多下载过内核的人都对这个非常熟悉 git clone git://android.git.kernel.org/kernel/common.git kernel 可是这是在曾经,如 ...

  4. [Android]libpng error: Not a PNG file错误解决

    我在将以前在Eclipse中写的项目import到android studio中后,出现了 AAPT err(Facade for 157667509): libpng error: Not a PN ...

  5. [Android测试] Appium的一些坑问题错误解决 与 技巧集锦

    转:https://blog.csdn.net/niubitianping/article/details/52624417 1. error: Failed to start an Appium s ...

  6. 安装 Android Studio 2.3 详细过程及错误解决

    因为要开发Android5.0的缘故,抛弃了eclipse转到了Android Studio,第一次使用就是遇到了许多问题,终于是解决问题了,特意写一篇博文给各位要准备从eclipse转到Androi ...

  7. 使用net.sf.json包提供的JSONObject.toBean方法时,日期转化错误解决办法

    解决办法: 需要在toBean之前添加配置 String[] dateFormats = new String[] {"yyyy-MM-dd HH:mm:ss"}; JSONUti ...

  8. Android编程之LayoutInflater的inflate方法实例

    假设你不关心其内部实现,仅仅看怎样使用的话,直接看这篇就可以. 接上篇,接下来,就用最最简单的样例来说明一下: 用两个布局文件main 和 test: 当中,main.xml文件为: <?xml ...

  9. Android编程之LayoutInflater的inflate方法详解

    LayoutInflater的inflate方法,在fragment的onCreateView方法中经常用到: public View onCreateView(LayoutInflater infl ...

随机推荐

  1. wget 无法下载jdk的处理办法

    完整语句:wget --no-cookie --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle. ...

  2. 基于百度地图api + AngularJS 的入门地图

    转载请注明地址:http://www.cnblogs.com/enzozo/p/4368081.html 简介: 此入门地图为简易的“广州大学城”公交寻路地图,采用很少量的AngularJS进行inp ...

  3. jQuery扩展extend一

    把这个扩展写在这里,以后要是忘了可以回头查看. (function(j) {// 这里的j是一个形参,表示传入的jQuery对象,j可以任意填写 j.extend({// 相当于给jQuery对象加上 ...

  4. linux 下dd命令直接清除分区表(不用再fdisk一个一个的删除啦)

    分区表是硬盘的分区信息,要删除一个硬盘的所有分区表很麻烦的,需要fdisk一个一个的删除,其实dd命令可直接清除分区信息,当然,这也是linux给root用户留下的作死方法之一.dd 命令主要参数如下 ...

  5. 快速提取PROTEL99SE PCB文件上的封装方法

    1.首先打开你要提取元件封装的PCB. 2.执行生成元件库的命令...软件会帮你把这个PCB上的所有元件生成一个临时库. 3.打开你自己的元件库... 4.PCB刚才生成的元件库中选中你所需要的元件, ...

  6. python 中 json的处理

    python中的json对象,其实就是字典类型. 利用json模块,可以将字符串类型的json串转换为 json对象(字典对象),也可以将json对象(字典对象)转换为字符串对象. 代码如: #cod ...

  7. 转:30分钟掌握STL

    三十分钟掌握STL 这是本小人书.原名是<using stl>,不知道是谁写的.不过我倒觉得很有趣,所以化了两个晚上把它翻译出来.我没有对翻译出来的内容校验过.如果你没法在三十分钟内觉得有 ...

  8. 最小生成树Prim算法

    文章作者:甘航  文章来源:http://www.cnblogs.com/ganhang-acm/转载请注明,谢谢合作. 由于数据结构老师布置的一道题 ,我看prim算法看了半天还是一知半解. 在浏览 ...

  9. APUE学习笔记——10.15 sigsetjmp和siglongjmp

    转载自:sigsetjmp使用方法 如侵犯您的权益,请联系:windeal12@qq.com sigsetjmp使用方法 分类: c/c++ linux2012-02-03 12:33 1252人阅读 ...

  10. ios常见加密解密方法

    在其他平台中经常会计算MD5值,在iOS平台中也提供了该方法,首先需要导入头文件 #import <CommonCrypto/CommonDigest.h> 方法CC_MD5可以获取MD5 ...