博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
动态添加Fragment的报错信息
阅读量:6327 次
发布时间:2019-06-22

本文共 2822 字,大约阅读时间需要 9 分钟。

05-29 21:23:28.406: E/AndroidRuntime(23636): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.***.Main}: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.05-29 21:23:28.406: E/AndroidRuntime(23636):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java)

代码:

public class Main extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        DisplayMetrics dm = new DisplayMetrics();        getWindowManager().getDefaultDisplay().getMetrics(dm);      if(dm.widthPixels>dm.heightPixels){            Fragment1 F1= new Fragment1();            getFragmentManager().beginTransaction().replace(R.id.MainID, F1).commit();     }      else{          Fragment2 F2 = new Fragment2();          getFragmentManager().beginTransaction().replace(R.id.MainID, F2).commit();      }    }} public class Fragment2 extends Fragment {
    public Fragment2(){
             }             public void onCreate(Bundle savedInstanceState)           {               super.onCreate(savedInstanceState);               System.out.println("F2  onCreate");           }           public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
            System.out.println("F2 onCreateView");               return inflater.inflate(R.layout.fragment2, container,true);         } } 错误的原因竟然是:return inflater.inflate(R.layout.fragment2, container,true)中的true; 修改成return inflater.inflate(R.layout.fragment2, container,false);
public View inflate (int resource, ViewGroup root, boolean attachToRoot)Inflate a new view hierarchy from the specified xml resource. Throws InflateException if there is an error.参数介绍:resource     ID for an XML layout resource to load (e.g., R.layout.main_page)root     Optional view to be the parent of the generated hierarchy (if attachToRoot is true), or else simply an object that          provides a set of LayoutParams values for root of the returned hierarchy (if attachToRoot is false.)attachToRoot     Whether the inflated hierarchy should be attached to the root parameter?                  If false, root is only used to create the correct subclass of LayoutParams for the root view in the XML.返回值说明:    The root View of the inflated hierarchy. If root was supplied and attachToRoot is true, this is root;  otherwise it is the root of the inflated XML file.

 网络上面的解析:

1. 如果root为null,attachToRoot将失去作用,设置任何值都没有意义。

2. 如果root不为null,attachToRoot设为true,则会在加载的布局文件的最外层再嵌套一层root布局。
3. 如果root不为null,attachToRoot设为false,则root参数失去作用。
4. 在不设置attachToRoot参数的情况下,如果root不为null,attachToRoot参数默认为true。

 

 

转载于:https://www.cnblogs.com/lyyh-victory/p/3760095.html

你可能感兴趣的文章
从优秀到卓越——反思应该如何创业
查看>>
Aperlib——Socket通讯模块压力及大数据对比工具
查看>>
Skype For Business2015 监控-存档服务器配置介绍
查看>>
linux中install命令基本用法
查看>>
技术分享连载(三十八)
查看>>
Lync Server 2010 安装部署系列二:域控制器安装
查看>>
WYSE *.ini常用写法以及ConfGen工具
查看>>
Kafka实战-Storm Cluster
查看>>
Android总结篇系列:Android 权限
查看>>
R学习笔记 第五篇:字符串操作
查看>>
在Mac OS下配置PHP开发环境
查看>>
(转)介绍下Nuget在传统Asp.net项目中的使用
查看>>
C# ArcEngine 实现点击要素高亮并弹出其属性
查看>>
c#线程初探(一)
查看>>
初识GO语言——安装Go语言
查看>>
SDK命令行操作
查看>>
基于Bootstrap的DropDownList的JQuery组件的完善版
查看>>
EXTJS学习系列提高篇:第二十四篇(转载)作者殷良胜,ext2.2打造全新功能grid系列--阅增删改篇...
查看>>
Hadoop MapReduce编程 API入门系列之分区和合并(十四)
查看>>
判断二叉树是否平衡、是否完全二叉树、是否二叉排序树
查看>>