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.LinkedIdViewFragment.java

public void finishFragment() {
    new Handler().post(new Runnable() {
        @Override//  w  w  w .ja v  a  2s  .com
        public void run() {
            FragmentManager manager = getFragmentManager();
            manager.removeOnBackStackChangedListener(LinkedIdViewFragment.this);
            manager.popBackStack("linked_id", FragmentManager.POP_BACK_STACK_INCLUSIVE);
        }
    });
}

From source file:org.dmfs.android.microfragments.transitions.ForwardResetTransition.java

@Override
public void prepare(@NonNull Context context, @NonNull FragmentManager fragmentManager,
        @NonNull MicroFragmentHost host, @NonNull MicroFragment<?> previousStep) {
    // insert an empty dummy fragment to enforce the animation that we want, otherwise the pop animation of the curent fragment would be played which is usually not what we want
    fragmentManager.beginTransaction()//ww  w. j  a  va 2s  .  c  o m
            .setCustomAnimations(R.anim.microfragments_swipe_enter, R.anim.microfragments_swipe_exit,
                    R.anim.microfragments_swipe_enter, R.anim.microfragments_swipe_exit)
            .replace(R.id.microfragments_host, new Fragment()).commit();
    fragmentManager.executePendingTransactions();
    fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
}

From source file:com.openerp.MainActivity.java

public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {
    int item_position = position - 1;
    DrawerItem item = mDrawerListItems.get(item_position);
    if (!item.isGroupTitle()) {
        if (!item.getKey().equals("com.openerp.settings")) {
            mDrawerItemSelectedPosition = item_position + 1;
        }//w w w .j  ava 2  s  . c  om

        android.support.v4.app.FragmentManager fm1 = getSupportFragmentManager();

        fm1.popBackStack("product", FragmentManager.POP_BACK_STACK_INCLUSIVE);
        fm1.popBackStack();

        mAppTitle = item.getTitle();
        loadFragment(item);
        mDrawerLayout.closeDrawers();
    }
    mDrawerListView.setItemChecked(mDrawerItemSelectedPosition, true);
}

From source file:com.ovrhere.android.careerstack.ui.MainActivity.java

/** Loads a fragment either by adding or replacing and then adds it to
 * the fragTagList.//w  w  w .  j  av  a2  s  . c o  m
 * @param fragment The fragment to add
 * @param tag The tag to give the fragment
 * @param backStack <code>true</code> to add to backstack, 
 * <code>false</code> to not.
 */
private void loadFragment(Fragment fragment, String tag, boolean backStack) {

    FragmentManager fragManager = getSupportFragmentManager();

    if (backStack) {
        String prevTag = fragTagStack.peek();
        fragManager.beginTransaction().addToBackStack(prevTag).replace(R.id.container, fragment, tag).commit();
    } else {
        //clear the entire backstack
        fragManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
        fragManager.beginTransaction().replace(R.id.container, fragment, tag).commit();
        fragTagStack.clear();
        fragSavedStates.clear();
    }

    fragTagStack.push(tag);

    checkTabletFrag();
    checkMenus();
    checkHomeButtonBack();
}

From source file:key.secretkey.crypto.PgpHandler.java

private void selectFolder(Intent data) {

    if (data.getStringExtra("Operation") == null || !data.getStringExtra("Operation").equals("SELECTFOLDER")) {
        Log.e(Constants.TAG, "PgpHandler#selectFolder(Intent) triggered with incorrect intent.");
        if (BuildConfig.DEBUG) {
            throw new UnsupportedOperationException("Triggered with incorrect intent.");
        }/* w  ww.  j a  v  a2  s  .co  m*/
        return;
    }

    Log.d(Constants.TAG, "PgpHandler#selectFolder(Intent).");

    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

    passwordList = new SelectFolderFragment();
    Bundle args = new Bundle();
    //        args.putString("Path", PasswordStorage.getRepositoryDirectory(getApplicationContext()).getAbsolutePath());

    passwordList.setArguments(args);

    getSupportActionBar().show();

    fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

    fragmentTransaction.replace(R.id.pgp_handler_linearlayout, passwordList, "PasswordsList");
    fragmentTransaction.commit();

    this.selectFolderData = data;
}

From source file:fr.mixit.android.ui.MembersActivity.java

@Override
public void startActivityFromFragment(Fragment fragment, Intent intent, int requestCode) {
    final Uri uri = intent.getData();
    if (uri != null && uri.getAuthority().equals(MixItContract.Members.CONTENT_URI.getAuthority())) {
        final boolean addToBackStack = intent.getBooleanExtra(IntentUtils.EXTRA_FROM_ADD_TO_BACKSTACK, false);
        final FragmentManager fm = getSupportFragmentManager();
        // MEMBER
        if (uri.getEncodedPath().startsWith(SLASH + MixItContract.PATH_MEMBERS)
                || uri.getEncodedPath().startsWith(SLASH + MixItContract.PATH_SPEAKERS)) {
            if (UIUtils.isTablet(this)) {
                if (addToBackStack) {
                    final MemberDetailsFragment frag = MemberDetailsFragment.newInstance(intent);
                    final FragmentTransaction ft = fm.beginTransaction();
                    ft.replace(R.id.content_member_details, frag);
                    ft.addToBackStack(null);
                    if (mTopFragCommitId == -1) {
                        mTopFragCommitId = ft.commit();
                    } else {
                        ft.commit();//from  w w w. jav  a2  s . co m
                    }
                    return;
                } else {
                    if (mTopFragCommitId != -1) {
                        fm.popBackStack(mTopFragCommitId, FragmentManager.POP_BACK_STACK_INCLUSIVE);
                        mTopFragCommitId = -1;
                    }
                    if (mMemberDetailsFrag != null) {
                        final int memberId = Integer.parseInt(MixItContract.Members.getMemberId(uri));
                        mMemberDetailsFrag.setMemberId(memberId);
                        return;
                    } else {
                        Log.e(TAG, "no fragment member details found but device is tablet");
                    }
                }
            } else {
                super.startActivityFromFragment(fragment, intent, requestCode);
                return;
            }
        } else
        // SESSIONS
        if (uri.getEncodedPath().startsWith(SLASH + MixItContract.PATH_SESSIONS)
                || uri.getEncodedPath().startsWith(SLASH + MixItContract.PATH_LIGHTNINGS)) {
            if (UIUtils.isTablet(this)) {
                final SessionDetailsFragment frag = SessionDetailsFragment.newInstance(intent);
                final FragmentTransaction ft = fm.beginTransaction();
                ft.replace(R.id.content_member_details, frag);
                ft.addToBackStack(null);
                if (mTopFragCommitId == -1) {
                    mTopFragCommitId = ft.commit();
                } else {
                    ft.commit();
                }
                return;
            } else {
                super.startActivityFromFragment(fragment, intent, requestCode);
                return;
            }
        }
    }
    super.startActivityFromFragment(fragment, intent, requestCode);
}

From source file:bf.io.openshop.ux.MainActivity.java

/**
 * Method clear fragment backStack (back history). On bottom of stack will remain Fragment added by {@link #addInitialFragment()}.
 *///from   w  w w  .  ja va 2  s.  c o m
private void clearBackStack() {
    Timber.d("Clearing backStack");
    FragmentManager manager = getSupportFragmentManager();
    if (manager.getBackStackEntryCount() > 0) {
        if (BuildConfig.DEBUG) {
            for (int i = 0; i < manager.getBackStackEntryCount(); i++) {
                Timber.d("BackStack content_%d= id: %d, name: %s", i, manager.getBackStackEntryAt(i).getId(),
                        manager.getBackStackEntryAt(i).getName());
            }
        }
        FragmentManager.BackStackEntry first = manager.getBackStackEntryAt(0);
        manager.popBackStack(first.getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
    }
    Timber.d("backStack cleared.");
    //        TODO maybe implement own fragment backStack handling to prevent banner fragment recreation during clearing.
    //        http://stackoverflow.com/questions/12529499/problems-with-android-fragment-back-stack
}

From source file:fr.mixit.android.ui.PlanningActivity.java

@Override
public void startActivityFromFragment(Fragment fragment, Intent intent, int requestCode) {
    final Uri uri = intent.getData();
    if (uri != null && uri.getAuthority().equals(MixItContract.Sessions.CONTENT_URI.getAuthority())) {
        final boolean addToBackStack = intent.getBooleanExtra(IntentUtils.EXTRA_FROM_ADD_TO_BACKSTACK, false);
        final FragmentManager fm = getSupportFragmentManager();
        // SESSION
        if (uri.getEncodedPath().startsWith(SLASH + MixItContract.PATH_SESSIONS)
                || uri.getEncodedPath().startsWith(SLASH + MixItContract.PATH_LIGHTNINGS)) {
            if (UIUtils.isTablet(this)) {
                if (addToBackStack) {
                    final SessionDetailsFragment frag = SessionDetailsFragment.newInstance(intent);
                    final FragmentTransaction ft = fm.beginTransaction();
                    ft.replace(R.id.content_session_details, frag);
                    ft.addToBackStack(null);
                    if (mTopFragCommitId == -1) {
                        mTopFragCommitId = ft.commit();
                    } else {
                        ft.commit();/*from  w  w  w  .ja  v a 2 s.c  o m*/
                    }
                    return;
                } else {
                    if (mTopFragCommitId != -1) {
                        fm.popBackStack(mTopFragCommitId, FragmentManager.POP_BACK_STACK_INCLUSIVE);
                        mTopFragCommitId = -1;
                    }
                    if (mSessionDetailsFrag != null) {
                        final int sessionId = Integer.parseInt(MixItContract.Sessions.getSessionId(uri));
                        mSessionDetailsFrag.setSessionId(sessionId);
                        return;
                    } else {
                        Log.e(TAG, "no fragment session details found but device is tablet");
                    }
                }
            } else {
                super.startActivityFromFragment(fragment, intent, requestCode);
                return;
            }
        } else
        // MEMBERS
        if (uri.getEncodedPath().startsWith(SLASH + MixItContract.PATH_MEMBERS)
                || uri.getEncodedPath().startsWith(SLASH + MixItContract.PATH_SPEAKERS)) {
            if (UIUtils.isTablet(this)) {
                final MemberDetailsFragment frag = MemberDetailsFragment.newInstance(intent);
                final FragmentTransaction ft = fm.beginTransaction();
                ft.replace(R.id.content_session_details, frag);
                ft.addToBackStack(null);
                if (mTopFragCommitId == -1) {
                    mTopFragCommitId = ft.commit();
                } else {
                    ft.commit();
                }
                return;
            } else {
                super.startActivityFromFragment(fragment, intent, requestCode);
                return;
            }
        }
    }
    super.startActivityFromFragment(fragment, intent, requestCode);
}

From source file:org.envirocar.app.activity.MainActivity.java

private void openFragment(int position) {
    FragmentManager manager = getSupportFragmentManager();

    switch (position) {

    // Go to the dashboard

    case DASHBOARD:

        if (isFragmentVisible(DASHBOARD_TAG)) {
            break;
        }//  w  ww  .  j  av a 2s .  com
        Fragment dashboardFragment = getSupportFragmentManager().findFragmentByTag(DASHBOARD_TAG);
        if (dashboardFragment == null) {
            dashboardFragment = new DashboardFragment();
        }
        manager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
        manager.beginTransaction().replace(R.id.content_frame, dashboardFragment, DASHBOARD_TAG).commit();
        break;

    //Start the Login activity

    case LOGIN:
        if (UserManager.instance().isLoggedIn()) {
            UserManager.instance().logOut();
            ListTracksFragment listMeasurementsFragment = (ListTracksFragment) getSupportFragmentManager()
                    .findFragmentByTag("MY_TRACKS");
            // check if this fragment is initialized
            if (listMeasurementsFragment != null) {
                listMeasurementsFragment.clearRemoteTracks();
            } else {
                //the remote tracks need to be removed in any case
                DbAdapterImpl.instance().deleteAllRemoteTracks();
            }
            Crouton.makeText(this, R.string.bye_bye, Style.CONFIRM).show();
        } else {
            if (isFragmentVisible(LOGIN_TAG)) {
                break;
            }
            LoginFragment loginFragment = new LoginFragment();
            manager.beginTransaction().replace(R.id.content_frame, loginFragment, LOGIN_TAG)
                    .addToBackStack(null).commit();
        }
        break;

    // Go to the settings

    case SETTINGS:
        Intent configIntent = new Intent(this, SettingsActivity.class);
        startActivity(configIntent);
        break;

    // Go to the track list

    case MY_TRACKS:

        if (isFragmentVisible(MY_TRACKS_TAG)) {
            break;
        }
        ListTracksFragment listMeasurementFragment = new ListTracksFragment();
        manager.beginTransaction().replace(R.id.content_frame, listMeasurementFragment, MY_TRACKS_TAG)
                .addToBackStack(null).commit();
        break;

    // Start or stop the measurement process

    case START_STOP_MEASUREMENT:
        if (!navDrawerItems[position].isEnabled())
            return;

        SharedPreferences preferences = PreferenceManager
                .getDefaultSharedPreferences(this.getApplicationContext());

        String remoteDevice = preferences.getString(org.envirocar.app.activity.SettingsActivity.BLUETOOTH_KEY,
                null);

        BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
        if (adapter != null && adapter.isEnabled() && remoteDevice != null) {
            if (CarManager.instance().getCar() == null) {
                Intent settingsIntent = new Intent(this, SettingsActivity.class);
                startActivity(settingsIntent);
            } else {
                /*
                 * We are good to go. process the state and stuff
                 */
                OnTrackModeChangeListener trackModeListener = new OnTrackModeChangeListener() {
                    @Override
                    public void onTrackModeChange(int tm) {
                        trackMode = tm;
                    }
                };

                createStartStopUtil().processButtonClick(trackModeListener);
            }
        } else {
            Intent settingsIntent = new Intent(this, SettingsActivity.class);
            startActivity(settingsIntent);
        }
        break;
    case HELP:

        if (isFragmentVisible(HELP_TAG)) {
            break;
        }
        HelpFragment helpFragment = new HelpFragment();
        manager.beginTransaction().replace(R.id.content_frame, helpFragment, HELP_TAG).addToBackStack(null)
                .commit();
        break;
    case SEND_LOG:

        if (isFragmentVisible(SEND_LOG_TAG)) {
            break;
        }
        SendLogFileFragment logFragment = new SendLogFileFragment();
        manager.beginTransaction().replace(R.id.content_frame, logFragment, SEND_LOG_TAG).addToBackStack(null)
                .commit();
    default:
        break;

    case LOGBOOK:

        if (isFragmentVisible(LOGBOOK_TAG)) {
            break;
        }
        LogbookFragment logbookFragment = new LogbookFragment();
        manager.beginTransaction().replace(R.id.content_frame, logbookFragment, LOGBOOK_TAG)
                .addToBackStack(null).commit();
        break;
    }
    drawer.closeDrawer(drawerList);

}

From source file:cn.edu.zafu.corepage.base.BaseActivity.java

/**
 * ?activitifragment//from  ww  w . j  ava  2s .  c  om
 * @param pageName page??
 * @param bundle ?
 * @param findAcitivity ?activity
 * @return ??
 */
protected boolean popFragmentInActivity(final String pageName, Bundle bundle, BaseActivity findAcitivity) {
    if (pageName == null || findAcitivity == null || findAcitivity.isFinishing()) {
        return false;
    } else {
        final FragmentManager fragmentManager = findAcitivity.getSupportFragmentManager();
        if (fragmentManager != null) {
            Fragment frg = fragmentManager.findFragmentByTag(pageName);
            if (frg != null && frg instanceof BaseFragment) {
                if (fragmentManager.getBackStackEntryCount() > 1 && mHandler != null) {
                    mHandler.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            fragmentManager.popBackStack(pageName, 0);
                        }
                    }, 100);
                }
                ((BaseFragment) frg).onFragmentDataReset(bundle);
                return true;
            }
        }
    }
    return false;
}