package me.weyye.todaynews.ui.fragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import java.util.ArrayList;
/**
* 主界面Fragment控制器
*/
public class FragmentController {
private int containerId;
private FragmentManager fm;
private ArrayList<Fragment> fragments;
private static FragmentController controller;
private static boolean isReload;
public static FragmentController getInstance(FragmentActivity activity, int containerId, boolean isReload) {
FragmentController.isReload = isReload;
if (controller == null) {
controller = new FragmentController(activity, containerId);
}
return controller;
}
public static void onDestroy() {
controller = null;
}
private FragmentController(FragmentActivity activity, int containerId) {
this.containerId = containerId;
fm = activity.getSupportFragmentManager();
initFragment();
}
private void initFragment() {
fragments = new ArrayList<>();
if (isReload) {
fragments.add(new HomeFragment());
fragments.add(new VideoFragment());
fragments.add(new AttentionFragment());
fragments.add(new MeFragment());
FragmentTransaction ft = fm.beginTransaction();
for (int i = 0; i < fragments.size(); i++) {
ft.add(containerId, fragments.get(i), "" + i);
}
ft.commit();
} else {
for (int i = 0; i < 5; i++) {
fragments.add( fm.findFragmentByTag(i+""));
}
}
}
public void showFragment(int position) {
hideFragments();
Fragment fragment = fragments.get(position);
FragmentTransaction ft = fm.beginTransaction();
//ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.show(fragment);
ft.commitAllowingStateLoss();
}
public void hideFragments() {
FragmentTransaction ft = fm.beginTransaction();
for (Fragment fragment : fragments) {
if (fragment != null) {
ft.hide(fragment);
}
}
ft.commitAllowingStateLoss();
}
public Fragment getFragment(int position) {
return fragments.get(position);
}
}