コード例 #1
0
 public void remove() {
   FragmentElement lastFragment = popInternal();
   if (lastFragment != null) {
     FragmentTransaction transaction = fm.beginTransaction();
     transaction.remove(lastFragment.getFragment());
     transaction.commitAllowingStateLoss();
   }
 }
コード例 #2
0
 public FragmentElement popAndReplace(@IdRes int place) {
   hide();
   FragmentElement pop = pop();
   if (pop != null) {
     replace(place, pop.getFragment(), pop.getName(), pop.isAddtoBackStack());
   }
   return pop;
 }
コード例 #3
0
 public FragmentElement popAndShow() {
   hide();
   FragmentElement pop = pop();
   if (pop != null) {
     show(pop.getFragment(), pop.getName(), pop.isAddtoBackStack());
   }
   return pop;
 }
コード例 #4
0
 public void onResume() {
   FragmentElement fragmentElement = popInternal();
   if (fragmentElement != null) {
     show(
         fragmentElement.getFragment(),
         fragmentElement.getName(),
         fragmentElement.isAddtoBackStack());
   }
 }
コード例 #5
0
 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;
 }
コード例 #6
0
  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();
    }
  }
コード例 #7
0
  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;
  }
コード例 #8
0
 /**
  * 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);
   }
 }
コード例 #9
0
 /**
  * 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);
 }
コード例 #10
0
 public void hide() {
   FragmentElement lastFragment = lastShownFragment();
   if (lastFragment != null) {
     hide(lastFragment.getFragment());
   }
 }