Fragment中多次调用onCreatView()导致异常问题的解析
来源:互联网 发布:网络黑白 百度文学 编辑:程序博客网 时间:2024/05/16 08:47
在项目开发过程中,通常都少不了Fragment的使用。
今天遇到一个问题,在一个activity中,使用多个Fragment,做FragmentTabHost的切换;Fragment第一次调用的时候没有问题。当从一个Fragment切换回之前调用过的Fragment的时候,出现FC。
报错:java.lang.IllegalStateException: The specified child already has a parent。You must call removeView() on the child’s parent first。
旧代码写法如下:
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) { if(null == layout){ layout = inflater.inflate(R.layout.xx, container, false); initUI(); initData(); } return layout;}
以前都是这么写的,都没有报错。这段代码之前是以兼容eclipse版本的模式写的,现在改成纯studio的目录格式,报了这个错。不知道具体的原因是什么。
解决:
既然出现错误了,就好好解决吧(有问题才有进步不是)。
从错误提示中可以看到,是非法状态异常,因为我们的view已经有一个父控件了,在重新切换进入该Fragment的时候要先在父控件中移除现有的child view。
所以对上述代码进行修改,获取我们view的父控件,判空,在非空的情况下,remove。
clean项目,重新rebuild,run…
再次切换,问题解决了。
@Override public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) { if (null == layout) { layout = inflater.inflate(R.layout.fragment_home, container, false); initUI(); initData(); } ViewGroup parent = (ViewGroup) layout.getParent(); if (null != parent){ parent.removeAllViews(); } return layout; }
以上是解决的方案,但是具体的原因还没有分析透彻,各路大神有对其中机制比较清楚的,可以留言交流。
阅读全文
0 0
- Fragment中多次调用onCreatView()导致异常问题的解析
- fragment多次调用onCreateView的问题
- 关于fragment多次调用onCreateView的问题
- Fragment中的onCreatView()没有立即调用
- 解决ListView,Gallery的Adapter中由于布局问题导致的getView多次调用问题
- 当FragmentTabHost切换Fragment时,重复调用Fragment的onCreatView方法的解决办法
- 关于Android中的onCreate()多次被调用导致bindService被多次调用的问题
- android之针对fragment多次调用onCreateView的问题
- android之针对fragment多次调用onCreateView的问题
- android之针对fragment多次调用onCreateView的问题
- android之针对fragment多次调用onCreateView的问题
- fragment引用EventBus 多次调用问题
- ViewPager 加载Fragment oncreatview() 方法重复调用最简单解决方案
- ViewPager嵌套Fragment,导致onActivityResult无法调用的问题
- addTextChangedListener在fragment中多次执行问题
- 项目中异常退出导致的问题。
- ListView的adapter中getView被多次调用的问题
- Android中多进程方式导致的全局Application的OnCreate多次被调用
- iOS-OC创建链式语法(链式编程)
- JS小技巧-弹窗界面的js引用背景页面js中的变量。
- Ubuntu16.04+CUDA8.0+CUNN5.1+caffe+tensorflow+Theano
- llvm安装libclang3.9
- python中time和random模块的使用
- Fragment中多次调用onCreatView()导致异常问题的解析
- 11.多线程模型的echo服务器
- 关于chmod的两个用法
- 无数本高清古籍善本下载,200多个G
- 2018秋招笔试题_韩信点兵_C++
- [docker]docker常用命令
- 【Android笔记-异常-3】数字在TextView中显示一定要先转换为字符串。String.valueOf(数字)
- WPF 批量读取文件夹下TXT文件写入EXCEL
- Kotlin中的const常量