关于报错The specified child already has a parent的解决办法
报错信息为:java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
首先,如果你看到这篇文章,说明你已经搜了很多篇了(首页可能字数都不够,但是又不甘心收获不能普度众生……),所以我想声明一下,你一定不要抱着直接找到源码解决问题的想法,要找方法,发现问题解决问题的方法!
好了,正如报错信息提示的,说明你现在要操作的这个View已经有了一个父View,所以你要找是不是那个地方,比如创建这个View时,调用了addView的方法等等,使它有了一个不知名的父类(只是你不知道而已)
这种问题普遍出现在动态添加View时,会出现。比如,有些项目把某一个控件如LinearLayout等,弄出来当作全局变量了,以便在其他地方直接调用addView进行动态添加,注意如果你在声明LinearLayout 时,试着紧跟着它动态添加一个view,没问题——那说明全局调用也绝对能用!所以,问题一定出在你创建自己定义的View时调用了addView等等别的方法,使得其有了父类,抑或是其本来就有父类,你不注意,所以自然要报错。
比如一下就是从网上直接拷来的自定义View的模板
public class CustomView extends RelativeLayout{
View mView=null;
public Weather(Context context) {
super(context);
LayoutInflater mInflater = LayoutInflater.from(context);
mView = mInflater.inflate(R.layout.weather, null);
addView(mView);
}
你要是使用这个自定义控件肯定不能通过addView添加到其他的布局中去,会报如题的错误,因为它已经有父类了(代码中addView(myView);使它有了父类,虽然没人知道其父类是谁~),所以必须要注释掉addView(myView);这个CustomView才是一个独立的View。
关于报错The specified child already has a parent的解决办法的更多相关文章
- 抓取https网页时,报错sun.security.validator.ValidatorException: PKIX path building failed 解决办法
抓取https网页时,报错sun.security.validator.ValidatorException: PKIX path building failed 解决办法 原因是https证书问题, ...
- 替换Fragment 报错 The specified child already has a parent. You must call removeView() on the child's parent first.
在将一个fragment替换到一个frameLayout的时候报错: code: transaction.replace(R.id.fragment_container, fragment2); 错误 ...
- SQL Developer报错:Unable to find a Java Virtual Machine解决办法
安装了64位的Oracle数据库以及32位的Oracle客户端,在开始菜单中第一次打开客户端的SQL Developer时提示输入java.exe的路径,我选择了Oracle数据库自带的jdk路径,确 ...
- 关于myeclipse启动报错:An internal error has occurred. java.lang.NullPointerException解决办法
启动myeclipse报错,百度了一下网友处理方式,对比日志,发现现在已有的教程真的是巨人坑: 如果出现了上述的错误按照如下的3个步骤解决:1.首先关闭MyEclipse工作空间.2.然后删除工作空间 ...
- 开启bin-log日志mysql报错:This function has none of DETERMINISTIC, NO SQL解决办法
开启bin-log日志mysql报错:This function has none of DETERMINISTIC, NO SQL解决办法: 创建存储过程时 出错信息: ERROR 1418 (HY ...
- Eclipse及Eclipse为基础的App报错“Failed to create the Java Virtual Machine”的解决办法
由于OracleJDK马上就要收费了,公司要求更换OpenJDK,结果安装后Eclipse及Eclipse为基础的App启动报错:“Failed to create the Java Virtual ...
- VUE.JS 使用axios数据请求时数据绑定时 报错 TypeError: Cannot set property 'xxxx' of undefined 的解决办法
正常情况下在data里面都有做了定义 在函数里面进行赋值 这时候你运行时会发现,数据可以请求到,但是会报错 TypeError: Cannot set property 'listgroup' of ...
- 启动Myeclipse报错“Failed to create the Java Virtual Machine”的解决办法
我安装的是Myeclipse 10.7.1.装上好久没用,今天启动突然报错:Failed to create the Java Virtual Machine. 检查Myeclipse安装好使用时好的 ...
- 启动Myeclipse报错“Failed to create the Java Virtual Machine”的解决办法
我安装的是Myeclipse 10.7.1.装上好久没用,今天启动突然报错:Failed to create the Java Virtual Machine. 检查Myeclipse安装好使用时好的 ...
随机推荐
- geeksforgeeks@ Find sum of different corresponding bits for all pairs (Bit manipulation)
http://www.practice.geeksforgeeks.org/problem-page.php?pid=387 Find sum of different corresponding b ...
- BOX2D测试
; ; Box2DTestLayer = cc.Layer.extend({ world:null, //GLESDebugDraw *m_debugDraw; ctor:function () { ...
- ajax 模仿百度下拉
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- js获取时间搓
var oData=new Date().getTime(2016-01-16); console.log(oData);
- c/c++,输入一个字符 2014-11-20 07:00 30人阅读 评论(0) 收藏
getch().getche()和getchar()函数 (1) getch()和getche()函数 这两个函数都是从键盘上读入一个字符.其调用格式为: getch(); ...
- hdu 1044 Collect More Jewels(bfs+状态压缩)
Collect More Jewels Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- TcxDBVerticalGrid优秀的编辑控件
- Leetcode237:Delete Node in a Linked List
Write a function to delete a node (except the tail) in a singly linked list, given only access to th ...
- POJ 1160Post Office
POJ 1160 Post Office 我不知道优化,我只知道最暴力的方法,O(V^3),居然100ms不到的过了 设DP[i][j][k]表示考虑前i个小镇,放了j个邮局,最后一个邮局的所在 ...
- java使用jdbc对sqlite 添加、删除、修改的操作
package com.jb.jubmis.Dao.DaoImpl; import java.io.File;import java.io.FileInputStream;import java.io ...