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

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

Introduction

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

Prototype

public abstract int getBackStackEntryCount();

Source Link

Document

Return the number of entries currently in the back stack.

Usage

From source file:com.rks.musicx.ui.activities.MainActivity.java

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    switch (id) {
    case android.R.id.home:
        FragmentManager fm = getSupportFragmentManager();
        if (fm.getBackStackEntryCount() > 0) {
            fm.popBackStack();//from  www  .jav  a2 s. c o  m
        } else {
            fragmentLoader(setContainerId(), setFragment());
        }
        return true;
    case R.id.system_eq:
        Intent intent = new Intent(AudioEffect.ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL);
        if (intent.getAction() != null && Helper.isActivityPresent(MainActivity.this, intent)) {
            intent.putExtra(AudioEffect.EXTRA_AUDIO_SESSION, musicXService.audioSession());
            startActivityForResult(intent, EQ);
        } else {
            Toast.makeText(this, "No app found to handle equalizer", Toast.LENGTH_SHORT).show();
        }
        break;
    case R.id.play_save_queue:
        multiQueuePlay();
        break;

    }
    return super.onOptionsItemSelected(item);
}

From source file:org.mariotaku.twidere.activity.HomeActivity.java

@Override
public void onBackStackChanged() {
    super.onBackStackChanged();
    if (!isDualPaneMode())
        return;//from  w ww  .  jav  a  2  s.  c  o  m
    final FragmentManager fm = getSupportFragmentManager();
    final Fragment left_pane_fragment = fm.findFragmentById(PANE_LEFT);
    final boolean left_pane_used = left_pane_fragment != null && left_pane_fragment.isAdded();
    setPagingEnabled(!left_pane_used);
    final int count = fm.getBackStackEntryCount();
    if (count == 0) {
        showLeftPane();
    }
    invalidateSupportOptionsMenu();
}

From source file:com.androzic.MainActivity.java

private void restoreDrawerUI() {
    FragmentManager fm = getSupportFragmentManager();
    if (fm.getBackStackEntryCount() > 0) {
        mDrawerToggle.setDrawerIndicatorEnabled(false);

        // FIXME This is the uggliest hack I have ever seen!
        getDrawerToggleDelegate().setActionBarUpIndicator(mHomeDrawable, R.string.cancel);
        setSupportActionBar(mToolbar);//  w  w  w .jav  a2  s . c  o m
        // End of hack

        mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, mDrawerList);
    } else {
        mDrawerToggle.setDrawerIndicatorEnabled(true);
        mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, mDrawerList);

        int pos = mDrawerAdapter.getSelectedItem();
        DrawerItem item = mDrawerItems.get(pos);
        if (item.type == DrawerItem.ItemType.FRAGMENT)
            updateDrawerUI(item, pos);
    }
}

From source file:org.namelessrom.devicecontrol.MainActivity.java

private void loadFragmentPrivate(final int i, final boolean onResume) {
    switch (i) {//from  w  w w.  j a  v  a  2  s  . co  m
    default: // slip through...
        //--------------------------------------------------------------------------------------
    case DeviceConstants.ID_ABOUT:
        if (!onResume)
            mCurrentFragment = new AboutFragment();
        mTitle = mFragmentTitle = R.string.app_name;
        mSubFragmentTitle = -1;
        break;
    //--------------------------------------------------------------------------------------
    case DeviceConstants.ID_DEVICE_INFORMATION:
        if (!onResume)
            mCurrentFragment = new DeviceInformationFragment();
        mTitle = mFragmentTitle = R.string.device;
        mSubFragmentTitle = -1;
        break;
    //--------------------------------------------------------------------------------------
    case DeviceConstants.ID_FEATURES:
        if (!onResume)
            mCurrentFragment = new DeviceFeatureFragment();
        mTitle = mFragmentTitle = R.string.features;
        mSubFragmentTitle = -1;
        break;
    case DeviceConstants.ID_FAST_CHARGE:
        if (!onResume)
            mCurrentFragment = new FastChargeFragment();
        mTitle = mSubFragmentTitle = R.string.fast_charge;
        break;
    case DeviceConstants.ID_SOUND_CONTROL:
        if (!onResume)
            mCurrentFragment = new SoundControlFragment();
        mTitle = mSubFragmentTitle = R.string.sound_control;
        break;
    case DeviceConstants.ID_KSM:
        if (!onResume)
            mCurrentFragment = new KsmFragment();
        mTitle = mSubFragmentTitle = R.string.ksm;
        break;
    case DeviceConstants.ID_UKSM:
        if (!onResume)
            mCurrentFragment = new UksmFragment();
        mTitle = mSubFragmentTitle = R.string.uksm;
        break;
    case DeviceConstants.ID_VOLTAGE:
        if (!onResume)
            mCurrentFragment = new VoltageFragment();
        mTitle = mSubFragmentTitle = R.string.voltage_control;
        break;
    case DeviceConstants.ID_ENTROPY:
        if (!onResume)
            mCurrentFragment = new EntropyFragment();
        mTitle = mSubFragmentTitle = R.string.entropy;
        break;
    //--------------------------------------------------------------------------------------
    case DeviceConstants.ID_PERFORMANCE_INFO:
        if (!onResume)
            mCurrentFragment = new InformationFragment();
        mTitle = mFragmentTitle = R.string.information;
        mSubFragmentTitle = -1;
        break;
    //--------------------------------------------------------------------------------------
    case DeviceConstants.ID_PERFORMANCE_CPU_SETTINGS:
        if (!onResume)
            mCurrentFragment = new CpuSettingsFragment();
        mTitle = mFragmentTitle = R.string.cpusettings;
        mSubFragmentTitle = -1;
        break;
    case DeviceConstants.ID_GOVERNOR_TUNABLE:
        if (!onResume)
            mCurrentFragment = new GovernorFragment();
        mTitle = mSubFragmentTitle = R.string.cpu_governor_tuning;
        break;
    //--------------------------------------------------------------------------------------
    case DeviceConstants.ID_PERFORMANCE_GPU_SETTINGS:
        if (!onResume)
            mCurrentFragment = new GpuSettingsFragment();
        mTitle = mFragmentTitle = R.string.gpusettings;
        mSubFragmentTitle = -1;
        break;
    //--------------------------------------------------------------------------------------
    case DeviceConstants.ID_FILESYSTEM:
        if (!onResume)
            mCurrentFragment = new FilesystemFragment();
        mTitle = mFragmentTitle = R.string.filesystem;
        mSubFragmentTitle = -1;
        break;
    case DeviceConstants.ID_IOSCHED_TUNING:
        if (!onResume)
            mCurrentFragment = new IoSchedConfigFragment();
        mTitle = mSubFragmentTitle = R.string.io;
        break;
    //--------------------------------------------------------------------------------------
    case DeviceConstants.ID_THERMAL:
        if (!onResume)
            mCurrentFragment = new ThermalFragment();
        mTitle = mFragmentTitle = R.string.thermal;
        mSubFragmentTitle = -1;
        break;
    //--------------------------------------------------------------------------------------
    case DeviceConstants.ID_TOOLS_TASKER:
        if (!onResume)
            mCurrentFragment = new TaskerFragment();
        mTitle = mFragmentTitle = R.string.tasker;
        mSubFragmentTitle = -1;
        break;
    //--------------------------------------------------------------------------------------
    case DeviceConstants.ID_TOOLS_FLASHER:
        if (!onResume)
            mCurrentFragment = new FlasherFragment();
        mTitle = mFragmentTitle = R.string.flasher;
        mSubFragmentTitle = -1;
        break;
    //--------------------------------------------------------------------------------------
    case DeviceConstants.ID_TOOLS_MORE:
        if (!onResume)
            mCurrentFragment = new ToolsMoreFragment();
        mTitle = mFragmentTitle = R.string.more;
        mSubFragmentTitle = -1;
        break;
    case DeviceConstants.ID_TOOLS_VM:
        if (!onResume)
            mCurrentFragment = new SysctlFragment();
        mTitle = mSubFragmentTitle = R.string.sysctl_vm;
        break;
    case DeviceConstants.ID_TOOLS_EDITORS_VM:
        if (!onResume)
            mCurrentFragment = new SysctlEditorFragment();
        mTitle = mSubFragmentTitle = R.string.sysctl_vm;
        break;
    case DeviceConstants.ID_TOOLS_EDITORS_BUILD_PROP:
        if (!onResume)
            mCurrentFragment = new BuildPropEditorFragment();
        mTitle = mSubFragmentTitle = R.string.buildprop;
        break;
    case DeviceConstants.ID_TOOLS_APP_MANAGER:
        if (!onResume)
            mCurrentFragment = new AppListFragment();
        mTitle = mSubFragmentTitle = R.string.app_manager;
        break;
    case DeviceConstants.ID_TOOLS_WIRELESS_FM:
        if (!onResume)
            mCurrentFragment = new WirelessFileManagerFragment();
        mTitle = mSubFragmentTitle = R.string.wireless_file_manager;
        break;
    //--------------------------------------------------------------------------------------
    case DeviceConstants.ID_PREFERENCES:
        if (!onResume)
            mCurrentFragment = new PreferencesFragment();
        mTitle = mFragmentTitle = R.string.preferences;
        mSubFragmentTitle = -1;
        break;
    }

    restoreActionBar();

    if (onResume) {
        return;
    }

    final boolean isSubFragment = mSubFragmentTitle != -1;

    final FragmentManager fragmentManager = getSupportFragmentManager();
    if (!isSubFragment && fragmentManager.getBackStackEntryCount() > 0) {
        // set a lock to prevent calling setFragment as onResume gets called
        AppHelper.preventOnResume = true;
        MainActivity.sDisableFragmentAnimations = true;
        fragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
        MainActivity.sDisableFragmentAnimations = false;
        // release the lock
        AppHelper.preventOnResume = false;
    }

    final FragmentTransaction ft = fragmentManager.beginTransaction();

    if (isSubFragment) {
        ft.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_right, R.anim.slide_in_left,
                R.anim.slide_out_left);
        ft.addToBackStack(null);
    }

    ft.replace(R.id.container, mCurrentFragment);
    ft.commit();

    final MaterialMenuDrawable.IconState iconState;
    if (isSubFragment) {
        iconState = MaterialMenuDrawable.IconState.ARROW;
    } else {
        iconState = MaterialMenuDrawable.IconState.BURGER;
    }

    sMaterialMenu.animateState(iconState);
}

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

@Override
public void onDestroyView() {
    {/*  ww w  . j  av  a 2 s. c o m*/
        // 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();
}

From source file:com.androzic.MainActivity.java

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action buttons
    switch (item.getItemId()) {
    case android.R.id.home:
        FragmentManager fm = getSupportFragmentManager();
        if (fm.getBackStackEntryCount() > 0) {
            View v = getCurrentFocus();
            if (v != null) {
                // Hide keyboard
                final InputMethodManager imm = (InputMethodManager) getSystemService(
                        Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
            }/*ww  w. j  a  va2  s  . c  o  m*/
            fm.popBackStack();
            return true;
        } else {
            if (mDrawerToggle.onOptionsItemSelected(item)) {
                return true;
            }
        }
    default:
        return super.onOptionsItemSelected(item);
    }
}

From source file:com.krayzk9s.imgurholo.activities.MainActivity.java

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    //Handle the back button
    SharedPreferences settings = getSettings();
    FragmentManager fragmentManager = getSupportFragmentManager();
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        if (getActionBar() != null)
            getActionBar().show();//from   w  w w . j av  a2s.com
    }
    if (keyCode == KeyEvent.KEYCODE_BACK && settings.getBoolean("ConfirmExit", false) && isTaskRoot()
            && fragmentManager.getBackStackEntryCount() == 0) {
        //Ask the user if they want to quit
        new AlertDialog.Builder(this).setTitle(R.string.dialog_quit_title)
                .setMessage(R.string.dialog_quit_summary)
                .setPositiveButton(R.string.dialog_answer_yes, new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                        //Stop the activity
                        MainActivity.this.finish();
                    }

                }).setNegativeButton(R.string.no, null).show();
        return true;
    } else {
        return super.onKeyDown(keyCode, event);
    }

}

From source file:com.androzic.MainActivity.java

private void selectItem(int position) {
    if (mDrawerAdapter.getSelectedItem() == position)
        return;//from  w ww  . j  a v  a 2  s.co m

    DrawerItem item = mDrawerItems.get(position);
    // Actions
    if (item.type == DrawerItem.ItemType.INTENT) {
        if (position > 0)
            startActivity(item.intent);
    }
    // Fragments
    else if (item.type == DrawerItem.ItemType.FRAGMENT) {
        FragmentManager fm = getSupportFragmentManager();
        if (fm.getBackStackEntryCount() > 0) {
            fm.popBackStackImmediate(0, FragmentManager.POP_BACK_STACK_INCLUSIVE);
        }
        FragmentTransaction ft = fm.beginTransaction();
        Fragment parent = fm.findFragmentById(R.id.content_frame);
        if (parent != null) {
            ft.detach(parent);
        }
        Fragment fragment = fm.findFragmentByTag(item.name);
        if (fragment != null) {
            ft.attach(fragment);
        } else {
            ft.add(R.id.content_frame, item.fragment, item.name);
        }
        ft.commit();
        // update selected item and title, then close the drawer
        updateDrawerUI(item, position);
    } else if (item.type == DrawerItem.ItemType.ACTION) {
        Log.e(TAG, "ACTION");
        runOnUiThread(item.action);
    }
    mDrawerLayout.closeDrawer(mDrawerList);
}

From source file:com.ereinecke.eatsafe.MainActivity.java

@Override
public void onBackPressed() {

    /* Capture back events when WebFragment is active and pass them to WebView */
    if (webFragment != null) {
        if (webFragment.canGoBack()) {
            // Logd(LOG_TAG, "webFragment canGoBack, will take backPress");
            webFragment.goBack();/*from  w  ww.  ja v a 2  s.  com*/
            return;
        }
    }

    /* Only go back if we're in single-pane mode */
    if (!isTablet) {
        /* Assume we only have one level of navigation, clear back arrow and title */
        showBackArrow(false);

        /* if we are showing a child view (ProductFragment, WebFragment that can't go back) */
        FragmentManager fm = getSupportFragmentManager();
        int count = fm.getBackStackEntryCount();
        // (LOG_TAG, "BackStackEntryCount: " + count);
        if (count == 0) { // no fragments on backstack
            super.onBackPressed();
        } else { // pop that fragment
            getFragmentManager().popBackStackImmediate();
        }
    }
}

From source file:com.androzic.MainActivity.java

@Override
public void addFragment(Fragment fragment, String tag) {
    FragmentManager fm = getSupportFragmentManager();
    // Get topmost fragment
    Fragment parent;//from  www  .  j  a v a  2 s .  c o  m
    if (fm.getBackStackEntryCount() > 0) {
        FragmentManager.BackStackEntry bse = fm.getBackStackEntryAt(fm.getBackStackEntryCount() - 1);
        parent = fm.findFragmentByTag(bse.getName());
    } else {
        parent = fm.findFragmentById(R.id.content_frame);
    }
    FragmentTransaction ft = fm.beginTransaction();
    // Detach parent
    ft.detach(parent);
    // Add new fragment to back stack
    ft.add(R.id.content_frame, fragment, tag);
    ft.addToBackStack(tag);
    ft.commit();
}