要完成动态的添加Fragment须执行下面几步:
1.创建一个类继承Fragment,实现 onCreateView方法
2.创建布局文件被fragment加载,当作fragment的布局
eg.
public class fragment1 extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v=inflater.inflate(R.layout.fragment1, container,false);
return v;
}
}
创建了一个fragment1 继承Fragment 并实现onCreateView方法,在方法内inflate一个布局文件,创造一个view并返回
3.主activity中获得 FragmentManager ;
FragmentManager fm=getFragmentManager();
顾名思义 FragmentManager 是对fragment管理的对象
4.接着用此对象开启一个事务
FragmentTransaction ft=fm.beginTransaction();
5.fm身上有三个简单方法
add(),remove(),replace()
add(containerViewId,fragment, tag):
containerViewId代表盛装fragment的容器,一般是一个布局
fragment代表将要添加的fragment
tag 为这个添加进去的fragment起的标签
remove(fragment);
移出参数所指的fragment
replace(containerViewId,fragment)
移出容器中所有的fragment ,并且把fragment add进去
6.提交事务
ft.commit();
这就完成了基本的添加操作
注意:
如果在一个layout中添加一个fragment再添加一个会怎么样?
第二次添加的fragment会叠加在第一次添加的上面,当第二个被销毁时,第一个会露出来才可以被看到
replace()的bug
在安卓4.4上测试过,如果几个fragment叠加在一个layout里面,调用replace方法,不能正确的移出所有的fragment
在安卓7.1.2上测试,可以正确的移出