public void remove() { FragmentElement lastFragment = popInternal(); if (lastFragment != null) { FragmentTransaction transaction = fm.beginTransaction(); transaction.remove(lastFragment.getFragment()); transaction.commitAllowingStateLoss(); } }
public FragmentElement popAndReplace(@IdRes int place) { hide(); FragmentElement pop = pop(); if (pop != null) { replace(place, pop.getFragment(), pop.getName(), pop.isAddtoBackStack()); } return pop; }
public FragmentElement popAndShow() { hide(); FragmentElement pop = pop(); if (pop != null) { show(pop.getFragment(), pop.getName(), pop.isAddtoBackStack()); } return pop; }
public void onResume() { FragmentElement fragmentElement = popInternal(); if (fragmentElement != null) { show( fragmentElement.getFragment(), fragmentElement.getName(), fragmentElement.isAddtoBackStack()); } }
public FragmentElement peek() { FragmentElement lastFragment = fragments.isEmpty() ? null : fragments.elementAt(0); int i = 1; int max = fragments.size(); while (i < max && (lastFragment != null && !lastFragment.isAddtoBackStack())) { lastFragment = fragments.isEmpty() ? null : fragments.elementAt(i); i++; } return i < max ? lastFragment : null; }
public void clear() { FragmentElement fragmentElement = popInternal(); while (fragmentElement != null) { hide(fragmentElement.getFragment()); fragmentElement = popInternal(); } int backStackSize = fm.getBackStackEntryCount(); for (int i = 0; i < backStackSize; i++) { fm.popBackStack(); } }
public FragmentElement pop() { FragmentElement last = lastShownFragment(); FragmentElement lastFragment = popInternal(); while ((lastFragment != null && !lastFragment.isAddtoBackStack()) || (lastFragment != null && lastFragment.equals(last))) { lastFragment = popInternal(); } if (lastFragment != null) { lastFragment.setPopped(true); } return lastFragment; }
/** * Instantiate or reattach existing Fragment * * @param context context * @param manager fragment manager * @param tx existing transaction * @param containerId container * @param info fragment definition */ public static void addOrAttachFragment( Context context, FragmentManager manager, FragmentTransaction tx, int containerId, FragmentElement element) { if (element.fragment == null) element.fragment = manager.findFragmentByTag(element.name); if (element.fragment == null) { Log.v("FragmentManager", "Instantiated new Fragment: " + element.name); tx.add(containerId, element.instantiate(context), element.name); } else { Log.v("FragmentManager", "Reattaching existing Fragment: " + element.name); tx.attach(element.fragment); } }
/** * Remove existing fragment with same tag and add new one. * * @param context context * @param manager fragment manager * @param tx existing transaction * @param containerId container * @param info fragment definition */ public static void addFragment( Context context, FragmentManager manager, FragmentTransaction tx, int containerId, FragmentElement element) { Fragment existing = manager.findFragmentByTag(element.name); if (existing != null) tx.remove(existing); Log.d("FragmentManager", "Instantiated new Fragment: " + element.name); tx.add(containerId, element.instantiate(context), element.name); }
public void hide() { FragmentElement lastFragment = lastShownFragment(); if (lastFragment != null) { hide(lastFragment.getFragment()); } }