2)在Activity的布局文件里声明Fragment
可以像为view一样为Fragment指定布局属性。例如:
<?xml version="1.0" encoding="utf-8"?>
Fragment标签中的android:name 属性指定了布局中实例化的Fragment类。
当系统创建Activity布局时,它实例化了布局文件中指定的每一个Fragment,并为它们调用onCreateView()函数,以获取每一个Fragment的布局。系统直接在
注:每个Fragment都需要一个唯一的标识,如果重启Activity,系统可用来恢复Fragment(并且可用来捕捉Fragment的事务处理,例如移除)。为Fragment提供ID有三种方法:
1)用android:id属性提供一个唯一的标识
2)用android:tag属性提供一个唯一的字符串
3)如果上述两个属性都没有,系统会使用其容器视图(view)的ID
3)通过编码将Fragment添加到已存在的ViewGroup中
在Activity运行的任何时候,你都可以将Fragment添加到Activity布局中。要管理Activity中的Fragment,可以使用FragmentManager。可以通过在Activity中调用getFragmentManager()获得。使用FragmentManager 可以做如下事情,包括:
- 使用findFragmentById()(用于在Activity布局中提供有界面的Fragment)或者findFragmentByTag()获取Activity中存在的Fragment(用于有界面或者没有界面的Fragment)
- 使用popBackStack()(模仿用户的BACK命令)从后台栈弹出Fragment
- 使用addOnBackStackChangedListener()注册一个监听后台栈变化的监听器
在Android中,对Fragment的事务操作都是通过FragmentTransaction来执行。操作大致可以分为两类:
- 显示:add() replace() show() attach()
- 隐藏:remove() hide() detach()
注:调用show() & hide()方法时,Fragment的生命周期方法并不会被执行,仅仅是Fragment的View被显示或者隐藏
- 执行replace()时(至少两个Fragment),会执行第二个Fragment的onAttach()方法、执行第一个Fragment的onPause()-onDetach()方法,同时containerView会detach第一个Fragment的View
- add()方法执行onAttach()-onResume()的生命周期,相对的remove()就是执行完成剩下的onPause()-onDetach()周期
可以像下面这样从Activity中取得FragmentTransaction的实例:
FragmentManager FragmentManager = getFragmentManager()
FragmentTransaction FragmentTransaction = FragmentManager.beginTransaction();
可以用add()函数添加Fragment,并指定要添加的Fragment以及要将其插入到哪个视图(view)之中(注意commit事务):
ExampleFragment Fragment = new ExampleFragment();
FragmentTransaction.add(R.id.Fragment_container, Fragment);
FragmentTransaction.commit();