Android 开发很多时候都需要一个界面的嵌套多个Fragment的需求,或者在Fragment里面嵌套Fragment的情况。
需求通过点击事件切换不通 的Fragment ,同时拥有上个Fragment的缓存效果,再次切换回去的时候无需再次实例
化Fragment和View对象。通过Bundle像Framgment传递数据
实现效果图片
FragmentCacheManager 代码实现如下
public class FragmentCacheManager {
public FragmentCacheManager() {
mCacheFragment = new SparseArray<>();
}
private FragmentManager mFragmentManager;
private Activity mActivity;
private Fragment mFragment;
private int mContainerId;
private long mLastBackTime;
private onBootCallBackListener listener;
//缓存的Fragment集合数据
private SparseArray<FragmentInfo> mCacheFragment;
public static boolean DEBUG = false;
//当前展示的Fragment
private Fragment mCurrentFragment;
private int mCurrentFragmentIndex = -1;
public void setUp(FragmentActivity activity, int containerId) {
if (mFragment != null) {
throw new RuntimeException("you have setup for Fragment");
}
this.mActivity = activity;
this.mContainerId = containerId;
mFragmentManager = activity.getSupportFragmentManager();
}
public void setUp(Fragment fragment, int containerId) {
if (mActivity != null) {
throw new RuntimeException("you have setup for Activity");
}
this.mFragment = fragment;
this.mContainerId = containerId;
mFragmentManager = fragment.getChildFragmentManager();
//Fragment所在的Activity
mActivity = fragment.getActivity();
}
public void setCurrentFragment(int index) {