今天学习的是Fragment的基本使用
1.Fragment的创建
静态加载:
1.定义Fragment的xml布局
2.自定义Fragment类,需要继承Fragment类或其子类,同时实现onCreatevive()方法
在方法中,通过inflater.inflate加载布局文件,接着返回view即可
3.需要加载Fragment的Activity对应的布局文件中<fragment的name属性需要为全限定类名>
4.Activity调用setCreatentView()加载布局文件即可
创建Fragment布局
创建类继承自Fragment
重写类中必要方法
页面布局中添加fragment标签并指定name
2.Fragment的创建
1.获得FragmentManager对象
FragmentManager fragmentManager=getSupportFragmentManager();
2.开启事务
FragmentTransaction transaction = fragmentManager.beginTransaction();
3.通过FragmentTransaction 调用add()、replace()方法管理fragment
4.transaction .commit()
![](https://img-blog.csdnimg.cn/img_convert/b11834d091115214b54d48721ab48fc0.png)
3.Fragment的基本使用
添加Fragment的方法:add();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
FragmentA fragmentA=new FragmentA();
transaction.add(R.id.main_frame_layout, fragmentA);
transaction .hide(fragmentB);
transaction.show(fragmentA);
替换Fragment的方法:replace();
replace方法,用FragmentA替换FragmentB
FragmentA在被replace后被销毁onDestory()
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
FragmentA fragmentA= new FragmentA();
transaction.replace(R.id.main_frame_layout, fragmentA);
transaction.commit();
移除Fragment的方法:remove();
当FragmentB替FragmentA时,先调用remove()方法移除FragmentA,然后再调用add()方法添加FragmentB
此方法调用时,这个FragmentA将会被销毁
FragmentA fragmentA= new FragmentA();
transaction.remove(fragmentA);
transaction.show(fragmentB);
transaction.commit();
隐藏/显示Fragment的方法:hide()/show()
切换到另外一个Fragment时,使用hide()方法将当前Fragment隐藏
当该Fragment需要被重新显示出来的时候,使用show()方法完成
FragmentA fragmentA= new FragmentA();
transaction.add(R.id.main_frame_layout, fragmentA);
transaction .hide(fragmentB);
transaction.show(fragmentA);
4.FragmentManager
FragmentManager是用来管理和控制所有Fragment的类
getFragmentManager():获取管理器
beginTransaction():开启事务(获取一个秘书)
addToBackStack(): 添加到回退栈中
1:获得FragmentManager对象
FragmentManager fragmentManager=getFragmentManager();
2:开启事务
FragmentTransaction transaction = fragmentManager.beginTransaction();
3:通过FragmentTransaction 调用add()、replace()方法管理fragment
4:transaction .commit();