现在大多使用Fragment的场景有两种,一种是一个APP只有一个Activity+很多Fragment。另一种是APP中的每一个模块是一个Activity + 多个Fragment。最近需要用到Fragment来替代部分Activity。所以思考一下有什么方案。
实现的需求
- Fragment 能像Activity那样有一个栈,然后跳转的时候会把Fragment加入到栈中,按返回键的时候能按顺序回退栈中的Fragment。
- 退回到第一个Fragment的时候再按返回键就finish Activity。
- 在跳转的时候和回退的时候能切换标题。
- 在任意的Fragment中都有返回第一个Fragment的方法。
设计是这样的,首先定义一个接口:
public interface IFragmentCallBack {
/**
* 从一个Fragment 跳到另一个Fragment
*
* @param tag
* @param current
*/
void jump(String tag, BaseFragment current);
/**
* 返回第一个Fragment
*/
void home();
}
定义一个BaseFragmentActivity实现这个接口,在onCreate方法中:
//处理异常退出恢复情况
if (savedInstanceState != null) {
List<Fragment> fragments = getSupportFragmentManager().getFragments();
if (fragments != null && fragments.size() > 0) {
boolean showFlag = false;