Example usage for android.support.v4.app FragmentManager popBackStack

List of usage examples for android.support.v4.app FragmentManager popBackStack

Introduction

In this page you can find the example usage for android.support.v4.app FragmentManager popBackStack.

Prototype

public abstract void popBackStack(int id, int flags);

Source Link

Document

Pop all back stack states up to the one with the given identifier.

Usage

From source file:org.sufficientlysecure.keychain.ui.keyview.ViewKeyActivity.java

public void showMainFragment() {
    new Handler().post(new Runnable() {
        @Override//from w w  w . j a  v  a2s  .  co m
        public void run() {
            FragmentManager manager = getSupportFragmentManager();

            // unless we must refresh
            ViewKeyFragment frag = (ViewKeyFragment) manager.findFragmentByTag("view_key_fragment");
            // if everything is valid, just drop it
            if (frag != null && frag.isValidForData(mIsSecret)) {
                return;
            }

            // if the main fragment doesn't exist, or is not of the correct type, (re)create it
            frag = ViewKeyFragment.newInstance(mMasterKeyId, mIsSecret);
            // get rid of possible backstack, this fragment is always at the bottom
            manager.popBackStack("security_token", FragmentManager.POP_BACK_STACK_INCLUSIVE);
            manager.beginTransaction().replace(R.id.view_key_fragment, frag, "view_key_fragment")
                    // if this gets lost, it doesn't really matter since the loader will reinstate it onResume
                    .commitAllowingStateLoss();
        }
    });
}

From source file:com.koushikdutta.widgets.ListContentFragmentInternal.java

@SuppressLint("InlinedApi")
void setContentNative(final String breadcrumb) {
    android.app.Fragment f = (android.app.Fragment) mCurrentContent;
    Activity fa = getActivity();/*  ww  w . j ava  2s.  com*/
    final android.app.FragmentManager fm = fa.getFragmentManager();

    android.app.FragmentTransaction ft = fm.beginTransaction();
    if (isPaged()) {
        if (listener == null) {
            fm.addOnBackStackChangedListener(new android.app.FragmentManager.OnBackStackChangedListener() {
                {
                    listener = this;
                }

                @Override
                public void onBackStackChanged() {
                    android.app.Fragment f = (android.app.Fragment) getFragment();
                    if (f.isDetached() || f.isRemoving()) {
                        fm.removeOnBackStackChangedListener(this);
                        return;
                    }
                    View v = getFragment().getView();
                    if (v == null)
                        return;
                    final View l = v.findViewById(R.id.list_fragment);
                    if (l == null)
                        return;
                    if (fm.getBackStackEntryCount() > 0 && "content"
                            .equals(fm.getBackStackEntryAt(fm.getBackStackEntryCount() - 1).getName())) {
                        l.setVisibility(View.GONE);
                    } else {
                        l.setVisibility(View.VISIBLE);
                    }
                }
            });
        }

        fm.popBackStack("content", android.app.FragmentManager.POP_BACK_STACK_INCLUSIVE);
        ft.setBreadCrumbTitle(breadcrumb);
        ft.setBreadCrumbShortTitle(breadcrumb);
        ft.addToBackStack("content");
    }
    ft.replace(getContentId(), f, "content");
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
    ft.commit();
}

From source file:com.koushikdutta.widgets.ListContentFragmentInternal.java

public void setContent(FragmentInterfaceWrapper content, boolean clearChoices, String breadcrumb) {
    mCurrentContent = content;// ww  w .  ja v  a2 s.  c  om
    if (getActivity() instanceof FragmentActivity) {
        Fragment f = (Fragment) mCurrentContent;
        FragmentActivity fa = (FragmentActivity) getActivity();
        final FragmentManager fm = fa.getSupportFragmentManager();
        FragmentTransaction ft = fa.getSupportFragmentManager().beginTransaction();
        if (isPaged()) {
            View v = getFragment().getView();
            Assert.assertNotNull(v);
            final View l = v.findViewById(R.id.list_fragment);
            Assert.assertNotNull(l);
            l.setVisibility(View.GONE);
            fm.addOnBackStackChangedListener(new OnBackStackChangedListener() {
                {
                    listener = this;
                }

                @Override
                public void onBackStackChanged() {
                    Fragment f = (Fragment) getFragment();
                    if (f.isDetached() || f.isRemoving()) {
                        fm.removeOnBackStackChangedListener(this);
                        return;
                    }
                    View v = getFragment().getView();
                    if (v == null)
                        return;
                    final View l = v.findViewById(R.id.list_fragment);
                    if (l == null)
                        return;
                    if (fm.getBackStackEntryCount() > 0 && "content"
                            .equals(fm.getBackStackEntryAt(fm.getBackStackEntryCount() - 1).getName())) {
                        l.setVisibility(View.GONE);
                    } else {
                        l.setVisibility(View.VISIBLE);
                    }
                }
            });

            fm.popBackStack("content", FragmentManager.POP_BACK_STACK_INCLUSIVE);
            ft.setBreadCrumbTitle(breadcrumb);
            ft.setBreadCrumbShortTitle(breadcrumb);
            ft.addToBackStack("content");
        }
        ft.replace(getContentId(), f, "content");
        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
        ft.commit();
    } else {
        setContentNative(breadcrumb);
    }

    if (clearChoices)
        getListView().clearChoices();
}

From source file:android.support.v17.leanback.app.GuidedStepSupportFragment.java

/**
 * Convenient method to pop to fragment with Given class.
 * @param  guidedStepFragmentClass  Name of the Class of GuidedStepSupportFragment to pop to.
 * @param flags Either 0 or {@link FragmentManager#POP_BACK_STACK_INCLUSIVE}.
 *///from w w  w  .  j  av a 2s  .  com
public void popBackStackToGuidedStepSupportFragment(Class guidedStepFragmentClass, int flags) {
    if (!GuidedStepSupportFragment.class.isAssignableFrom(guidedStepFragmentClass)) {
        return;
    }
    final FragmentManager fragmentManager = getFragmentManager();
    final int entryCount = fragmentManager.getBackStackEntryCount();
    String className = guidedStepFragmentClass.getName();
    if (entryCount > 0) {
        for (int i = entryCount - 1; i >= 0; i--) {
            BackStackEntry entry = fragmentManager.getBackStackEntryAt(i);
            String entryClassName = getGuidedStepSupportFragmentClassName(entry.getName());
            if (className.equals(entryClassName)) {
                fragmentManager.popBackStack(entry.getId(), flags);
                return;
            }
        }
    }
}

From source file:key.secretkey.MainActivity.java

private void checkLocalRepository(File localDir) {
    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    if (localDir != null && settings.getBoolean("repository_initialized", false)) {
        Log.d("PASS", "Check, dir: " + localDir.getAbsolutePath());
        // do not push the fragment if we already have it
        if (fragmentManager.findFragmentByTag("PasswordsList") == null
                || settings.getBoolean("repo_changed", false)) {
            settings.edit().putBoolean("repo_changed", false).apply();

            plist = new PasswordFragment();
            Bundle args = new Bundle();
            args.putString("Path",
                    PasswordStorage.getRepositoryDirectory(getApplicationContext()).getAbsolutePath());

            // if the activity was started from the autofill settings, the
            // intent is to match a clicked pwd with app. pass this to fragment
            if (getIntent().getBooleanExtra("matchWith", false)) {
                args.putBoolean("matchWith", true);
            }// ww  w  .  j  ava 2 s .  c  o  m

            plist.setArguments(args);

            getSupportActionBar().show();
            getSupportActionBar().setDisplayHomeAsUpEnabled(false);

            fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

            fragmentTransaction.replace(R.id.main_layout, plist, "PasswordsList");
            fragmentTransaction.commit();
        }
    } else {
        //            getSupportActionBar().hide();

        fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
        //            Snackbar snack = Snackbar.make(findViewById(R.id.main_layout), "You fucked up, you shouldn't be here XD",
        //                    Snackbar.LENGTH_INDEFINITE);
        //            snack.show();

        createNewRepository();

        //            ToCloneOrNot cloneFrag = new ToCloneOrNot();
        //            fragmentTransaction.replace(R.id.main_layout, cloneFrag, "ToCloneOrNot");
        //            fragmentTransaction.commit();
    }
}

From source file:android.support.v17.leanback.app.GuidedStepSupportFragment.java

/**
 * Convenient method to close GuidedStepSupportFragments on top of other content or finish Activity if
 * GuidedStepSupportFragments were started in a separate activity.  Pops all stack entries including
 * {@link #UI_STYLE_ENTRANCE}; if {@link #UI_STYLE_ENTRANCE} is not found, finish the activity.
 * Note that this method must be paired with {@link #add(FragmentManager, GuidedStepSupportFragment,
 * int)} which sets up the stack entry name for finding which fragment we need to pop back to.
 *///w ww . j  av  a 2  s  .c  om
public void finishGuidedStepSupportFragments() {
    final FragmentManager fragmentManager = getFragmentManager();
    final int entryCount = fragmentManager.getBackStackEntryCount();
    if (entryCount > 0) {
        for (int i = entryCount - 1; i >= 0; i--) {
            BackStackEntry entry = fragmentManager.getBackStackEntryAt(i);
            if (isStackEntryUiStyleEntrance(entry.getName())) {
                GuidedStepSupportFragment top = getCurrentGuidedStepSupportFragment(fragmentManager);
                if (top != null) {
                    top.setUiStyle(UI_STYLE_ENTRANCE);
                }
                fragmentManager.popBackStack(entry.getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
                return;
            }
        }
    }
    ActivityCompat.finishAfterTransition(getActivity());
}

From source file:com.chatwing.whitelabel.activities.CommunicationActivity.java

@Override
public void onBackPressed() {
    if (mCurrentCommunicationMode.isSecondaryDrawerOpening()) {
        ((ChatboxModeManager) mCurrentCommunicationMode).closeSecondaryDrawer();
    } else if (!mCurrentCommunicationMode.isCommunicationBoxDrawerOpening()) {
        // Both online users and chat boxes/conversation lists are closed.
        // Open chat boxes/conversation list now.
        mCurrentCommunicationMode.openCommunicationBoxDrawer();
    } else {//  ww  w  .j  a  va 2 s .co  m
        // Online users list is closed, chat boxes list is opened.
        // User probably is trying to quit the app.
        FragmentManager fragmentManager = getSupportFragmentManager();
        int stackSize = fragmentManager.getBackStackEntryCount();
        if (stackSize == 0) {
            finish();
        } else {
            String fragmentTag = fragmentManager.getBackStackEntryAt(stackSize - 1).getName();
            fragmentManager.popBackStack(fragmentTag, FragmentManager.POP_BACK_STACK_INCLUSIVE);
        }
    }
}

From source file:vn.cybersoft.obs.android.activities.MainActivity.java

public void swapToFragmentView(ScreenList newFragment) {
    Log.i(t, "swapToFragmentView: " + newFragment.toString());
    FragmentManager fragmentManager = getSupportFragmentManager();
    Fragment fragment = null;/*w  w w  . ja  va  2s . c  o m*/
    if (ScreenList.BATTERY_INFO == newFragment) {
        fragment = fragmentManager.findFragmentById(BatteryInfoFragment.LAYOUT_ID);
        if (null == fragment) {
            fragment = new BatteryInfoFragment();
        }
    } else if (ScreenList.OPTIMIZATION == newFragment) {
        fragment = fragmentManager.findFragmentById(OptimizationFragment.LAYOUT_ID);
        if (null == fragment) {
            fragment = new OptimizationFragment();
        }
    } else if (ScreenList.CHARGE == newFragment) {
        fragment = fragmentManager.findFragmentById(ChargeFragment.LAYOUT_ID);
        if (null == fragment) {
            fragment = new ChargeFragment();
        }
    } else if (ScreenList.CONSUMPTION == newFragment) {
        fragment = fragmentManager.findFragmentById(ConsumptionFragment.LAYOUT_ID);
        if (null == fragment) {
            fragment = new ConsumptionFragment();
        }
    } else if (ScreenList.ABOUT == newFragment) {
        fragment = fragmentManager.findFragmentById(AboutFragment.LAYOUT_ID);
        if (null == fragment) {
            fragment = new AboutFragment();
        }
    } else {
        throw new IllegalStateException("Unrecognized ScreenList type");
    }

    currentFragment = newFragment;
    BackStackEntry entry = null;
    for (int i = 0; i < fragmentManager.getBackStackEntryCount(); ++i) {
        BackStackEntry e = fragmentManager.getBackStackEntryAt(i);
        if (e.getName().equals(currentFragment.name())) {
            entry = e;
            break;
        }
    }

    if (null != entry) {
        // flush backward, including the screen want to go back to
        //fragmentManager.popBackStackImmediate(currentFragment.name(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
        fragmentManager.popBackStack(currentFragment.name(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
    }

    // add transaction to show the screen we want
    FragmentTransaction transaction = fragmentManager.beginTransaction();
    transaction.replace(R.id.main_frame, fragment);
    transaction.addToBackStack(currentFragment.name());
    transaction.commit();
    levelSafeInvalidateOptionsMenu();
}

From source file:com.cnm.cnmrc.fragment.vodtvch.Base.java

@Override
public void onDestroyView() {
    {// w  w  w . ja  va2 s.com
        // back key ? 2,    ?,  destoryview? ? count minus?.
        // ? TAG_FRAGMENT_BASE?  fragment ?  .  . .
        // backstack?  transaction? count ? minus ?.
        Fragment f = getActivity().getSupportFragmentManager()
                .findFragmentByTag(((MainActivity) getActivity()).TAG_FRAGMENT_BASE);
        if (f != null) {
            Log.i("hwang", "At Base TAG_FRAGMENT_BASE exist!!!");
        } else {
            Log.i("hwang", "At Base TAG_FRAGMENT_BASE no exist!!!");
        }

        f = getActivity().getSupportFragmentManager().findFragmentById(R.id.loading_data_panel);
        if (f != null) {
            Log.i("hwang", "At Base loading_data_panel exist!!!");
        } else {
            Log.i("hwang", "At Base loading_data_panel no exist!!!");
        }
    }

    //      {
    //         FragmentManager fm = getActivity().getSupportFragmentManager();
    //         Log.i("hwang", "before destory base view fragment count --> " + Integer.toString(fm.getBackStackEntryCount()));
    //           Fragment f = getActivity().getSupportFragmentManager().findFragmentByTag(((MainActivity) getActivity()).TAG_FRAGMENT_BASE);
    //           if (f != null) {
    //              getActivity().getSupportFragmentManager().beginTransaction().remove(f).commit();   // TAG_FRAGMENT_BASE?  fragment ?? ?.
    //            fm.executePendingTransactions(); // fragment ?  ?.
    //           }
    //         Log.i("hwang", "after destory base view fragment count --> " + Integer.toString(fm.getBackStackEntryCount()));
    //         
    //         // check
    //         //  entry stack? ? 0 ? index?.
    //         for (int entry = 0; entry < fm.getBackStackEntryCount(); entry++) {
    //            Log.i("hwang", "Found fragment: " + fm.getBackStackEntryAt(entry).getId());
    //         }
    //      }

    //      {
    //         // same above, ~ ?? ? TAG_FRAGMENT_BASE? ?  fragment ? ?.
    //         FragmentManager fm = getActivity().getSupportFragmentManager();
    //         Log.i("hwang", "before destory base view fragment count --> " + Integer.toString(fm.getBackStackEntryCount()));
    //           Fragment f = getActivity().getSupportFragmentManager().findFragmentByTag(((MainActivity) getActivity()).TAG_FRAGMENT_BASE);
    //           if (f != null) {
    //            fm.popBackStack(((MainActivity) getActivity()).TAG_FRAGMENT_BASE, 0);   // ? ? null ?.             // TAG_FRAGMENT_BASE?  fragment  ?.
    //             fm.popBackStack(((MainActivity) getActivity()).TAG_FRAGMENT_BASE, FragmentManager.POP_BACK_STACK_INCLUSIVE);   // TAG_FRAGMENT_BASE?  fragment  ?. ??.....
    //            fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);                                    // stack?   fragment ?.
    //           }
    //         Log.i("hwang", "after destory base view fragment count --> " + Integer.toString(fm.getBackStackEntryCount()));
    //         
    //         // check
    //         //  entry stack? ? 0 ? index?.
    //         for (int entry = 0; entry < fm.getBackStackEntryCount(); entry++) {
    //            Log.i("hwang", "Found fragment: " + fm.getBackStackEntryAt(entry).getId());
    //         }
    //      }

    //      To clear stack you need to call:
    //
    //         ScreenFragment.sDisableExitAnimation = true;
    //         manager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
    //         transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);

    //      FragmentManager fm = getActivity().getSupportFragmentManager();
    //      for(int i = 0; i < fm.getBackStackEntryCount(); ++i) {    
    //          fm.popBackStack();
    //      }
    //      But could equally have used something like:
    //
    //      FragmentManager.popBackStack(String name, FragmentManager.POP_BACK_STACK_INCLUSIVE);
    //      To go to top simply use: fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); 

    //      // transaction.replace(R.id.detailFragment, frag1);
    //      Transaction.remove(null).add(frag1)  // frag1 on view
    //
    //      // transaction.replace(R.id.detailFragment, frag2).addToBackStack(null);
    //      Transaction.remove(frag1).add(frag2).addToBackStack(null)  // frag2 on view
    //
    //      // transaction.replace(R.id.detailFragment, frag3);
    //      Transaction.remove(frag2).add(frag3)  // frag3 on view

    //      FragmentManager fm = getActivity().getSupportFragmentManager();
    //      for(int i = 0; i < fm.getBackStackEntryCount(); ++i) {
    //          fm.popBackStack();
    //      }

    // Use a name for your initial back stack state and use FragmentManager.popBackStack(String name, FragmentManager.POP_BACK_STACK_INCLUSIVE).
    // Use FragmentManager.getBackStackEntryCount()/getBackStackEntryAt().getId() to retrieve the ID of the first entry on the back stack, 
    // and FragmentManager.popBackStack(int id, FragmentManager.POP_BACK_STACK_INCLUSIVE).

    // is supposed to pop the entire back stack...
    //FragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE) 

    // Base? onDestroyView() 2  .
    //  ft.replace(R.id.loading_data_panel, base); 
    //   ft.add(R.id.loading_data_panel, base, ((MainActivity) getActivity()).TAG_FRAGMENT_BASE);
    // getBackStackEntryCount() ??  ...  ?  ? ? ??...
    // backstack? count  ???  ? ?...
    FragmentManager fm = getActivity().getSupportFragmentManager();
    if (!isFirstDepth) { //  1 depth?? ? depth?...
        //if(fm.getBackStackEntryCount() > 0 && fm.getBackStackEntryCount() < 8) {     // indicator 8 ...
        Log.i("hwang", "before Base onDestroyView() fragment count --> "
                + Integer.toString(fm.getBackStackEntryCount()));
        Fragment f = getActivity().getSupportFragmentManager()
                .findFragmentByTag(((MainActivity) getActivity()).TAG_FRAGMENT_BASE);
        if (f != null) {
            //  ?? ~~~~
            // popBackStack()? ?  ? ? ? ?. , backstack count ? minus? ??.
            //fm.popBackStack(((MainActivity) getActivity()).TAG_FRAGMENT_BASE, 0);   // ? ? null ?.               // TAG_FRAGMENT_BASE?  fragment  ?.
            //fm.popBackStack(((MainActivity) getActivity()).TAG_FRAGMENT_BASE, FragmentManager.POP_BACK_STACK_INCLUSIVE);   // TAG_FRAGMENT_BASE?  fragment  ?. ??...
            //fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);                                    // stack?   fragment ?.

            //getActivity().getSupportFragmentManager().beginTransaction().remove(f).commit();                        // TAG_FRAGMENT_BASE?  fragment ?? ?.
            //fm.executePendingTransactions();                                                             // fragment ?  ?.

            // sidebar ? ...
            Fragment f1 = fm.findFragmentByTag(((MainActivity) getActivity()).TAG_FRAGMENT_VOD_TVCH);
            if (f1 != null) {
                if (((VodTvchMain) f1).mSlidingMenu.isOpening()) {
                    getActivity().getSupportFragmentManager().beginTransaction().remove(f).commit();
                    //fm.getBackStackEntryAt(0);
                    //fm.popBackStack(((MainActivity) getActivity()).TAG_FRAGMENT_BASE, FragmentManager.POP_BACK_STACK_INCLUSIVE);
                    //fm.executePendingTransactions();    

                    for (int i = 0; i < fm.getBackStackEntryCount(); i++) {
                        //                       fm.popBackStack(((MainActivity) getActivity()).TAG_FRAGMENT_BASE, FragmentManager.POP_BACK_STACK_INCLUSIVE);
                        fm.popBackStack(i, 0); // OK
                        //fm.popBackStack(i, FragmentManager.POP_BACK_STACK_INCLUSIVE); // not OK
                    }
                }
            }

        }
        Log.i("hwang", "after Base onDestroyView() fragment count --> "
                + Integer.toString(fm.getBackStackEntryCount()));

        // check
        //  entry stack? ? 0 ? index?.
        for (int entry = 0; entry < fm.getBackStackEntryCount(); entry++) {
            Log.i("hwang", "At Base onDestroyView() Found fragment: " + fm.getBackStackEntryAt(entry).getId());
        }

        deleteDepthLevel();

        {
            f = getActivity().getSupportFragmentManager().findFragmentById(R.id.loading_data_panel);
            FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
            if (f != null) {
                if (f.isHidden())
                    ft.show(f).commit(); // loading_data_panel TAG_FRAGMENT_BASE  ?.   ?
                // f --> VodList{42626a88 #12 id=0x7f0c0048 base}
                // f --> VodList{42624ab0 #11 id=0x7f0c0048 base}
                // f --> VodList{42622ad8 #10 id=0x7f0c0048 base}
                // f --> VodList{42620b00 #9 id=0x7f0c0048 base}
                // f --> VodList{4261ea88 #8 id=0x7f0c0048 base}
                // f --> VodList{4261c560 #7 id=0x7f0c0048}
            }
        }

    }

    super.onDestroyView();
}