# Android Fragment堆栈 解析

Android Fragment管理 解析

引言


我们都会通过FragmentManager对象和FragmentTransaction来进行Fragment事物管理,将Fragment压入堆栈,用于用户的界面的导航。当然你也可以自己管理Fragment,通过后退按钮进行fragment的导航。这里我们主要说的是前者。

解析


简单使用

FragmentManager manager = getSupportFragmentManager();//获取Fragment管理类
FragmentTransaction transaction = manager.beginTransaction();//事务处理类
transaction.add(R.id.fragment, new FirstFragment(), "title");//add 方法事务
transaction.commit(); //提交事务

FrgamentManager

FragmentManager是一个抽象类,用于管理Fragment,主要还是Fragment堆栈的管理。具体实现类是FragmentManagerImpl.

方法解析:

1.findFragmentById(int id) 通过ID找到对应的fragment在activity堆栈中

2.findFragmentByTag(String tag)通过tag找到对应的fragment在activity堆栈中.

3.popBackStack()等其他任务完成后,fragment进行出栈
4.beginTransaction()获取FragmentTransaction,用于一系列对Fragemnts的编辑操作
5.popBackStackImmediate()fragment立即出栈
6.getFragments()获取栈内的所有Fragment

FragmentTransaction

用于一系列的对Fragments堆栈的处理。

方法解析:

1.add(int containerViewId, Fragment fragment, String tag)把一个fragment添加到一个容器 container 里。

2.remove(Fragment fragment) replace 是先remove掉相同id的所有fragment,然后在add当前的这个fragment。

  1. replace(int containerViewId, Fragment fragment, String tag)替换一个已经存在堆栈中的fragment,类似于先执行remove(),再add的过程。也就是说会销毁视图,所以不推荐这么做,会增大内存消耗
  2. hide(Fragment fragment)隐藏一个存在的fragment 即Visibliity变为visible
  3. show(Fragment fragment)显示之前隐藏的fragmentVisibliity变为GONE
  4. commit()事务的提交

总结

  • Fragment通过FragmentManager来管理Fragments.
  • 通过FragmentTransaction来进行事务处理。

你可能感兴趣的:(# Android Fragment堆栈 解析)