android.app.FragmentManager#popBackStack ( )源码实例Demo

下面列出了android.app.FragmentManager#popBackStack ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: mirror   文件: MirrorActivity.java
private void hideFragment(final Fragment fragment,
                          final boolean removeParentView,
                          final boolean addedToBackStack,
                          final String tag) {
    final FragmentManager manager = getFragmentManager();
    if (manager.findFragmentByTag(tag) != null) {
        final FragmentTransaction transaction = manager.beginTransaction();
        transaction.remove(fragment);
        transaction.commit();
        if (addedToBackStack) {
            manager.popBackStack();
        }

        final int viewId = getParentId(fragment);
        if (removeParentView && viewId != 0) {
            mContentContainer.removeBorderView(viewId);
        }
    }
}
 
源代码2 项目: blocktopograph   文件: WorldActivity.java
public void changeContentFragment(final OpenFragmentCallback callback){

        final FragmentManager manager = getFragmentManager();

        // confirmContentClose shouldn't be both used as boolean and as close-message,
        //  this is a bad pattern
        if(confirmContentClose != null){
            new AlertDialog.Builder(this)
                .setMessage(confirmContentClose)
                .setCancelable(false)
                .setPositiveButton(android.R.string.yes,
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            manager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
                            callback.onOpen();
                        }
                    })
                .setNegativeButton(android.R.string.no, null)
                .show();
        } else {
            manager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
            callback.onOpen();
        }

    }
 
源代码3 项目: UltimateAndroid   文件: DriveImageViewActivity.java
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            FragmentManager fm = getFragmentManager();
            if (fm.getBackStackEntryCount() > 0) {
                fm.popBackStack();
            }
            return true;
        case R.id.menu_item_help:
            AboutDialog aboutDialog = new AboutDialog(this);
            aboutDialog.show();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
 
源代码4 项目: driveimageview   文件: MainActivity.java
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            FragmentManager fm = getFragmentManager();
            if (fm.getBackStackEntryCount() > 0) {
                fm.popBackStack();
            }
            return true;
        case ch.haclyon.driveimageview.example.R.id.menu_item_help:
            AboutDialog aboutDialog = new AboutDialog(this);
            aboutDialog.show();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
 
源代码5 项目: LyricHere   文件: ActionBarCastActivity.java
@Override
public void onBackPressed() {
    // If the drawer is open, back will close it
    if (mDrawerLayout != null && mDrawerLayout.isDrawerOpen(Gravity.START)) {
        mDrawerLayout.closeDrawers();
        return;
    }
    // Otherwise, it may return to the previous fragment stack
    FragmentManager fragmentManager = getFragmentManager();
    if (fragmentManager.getBackStackEntryCount() > 0) {
        fragmentManager.popBackStack();
    } else {
        // Lastly, it will rely on the system behavior for back
        super.onBackPressed();
    }
}
 
源代码6 项目: Conversations   文件: ConversationsActivity.java
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (MenuDoubleTabUtil.shouldIgnoreTap()) {
        return false;
    }
    switch (item.getItemId()) {
        case android.R.id.home:
            FragmentManager fm = getFragmentManager();
            if (fm.getBackStackEntryCount() > 0) {
                try {
                    fm.popBackStack();
                } catch (IllegalStateException e) {
                    Log.w(Config.LOGTAG, "Unable to pop back stack after pressing home button");
                }
                return true;
            }
            break;
        case R.id.action_scan_qr_code:
            UriHandlerActivity.scan(this);
            return true;
    }
    return super.onOptionsItemSelected(item);
}
 
private void replaceFragment(@Nullable Fragment fragment, boolean clearBackStack) {
    if (fragment == null || isStateSaved) {
        return;
    }

    Fragment currentFragment = getCurrentFragment();
    FragmentManager manager = getFragmentManager();
    if (clearBackStack) {
        manager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
    }

    @SuppressLint("CommitTransaction")
    FragmentTransaction transaction = manager.beginTransaction()
            .replace(R.id.ym_container, fragment);
    if (!clearBackStack && currentFragment != null) {
        transaction.addToBackStack(fragment.getTag());
    }
    transaction.commit();
    hideKeyboard();
}
 
源代码8 项目: stynico   文件: FilePickerActivity.java
@Override
public void onBackPressed() {
    FragmentManager fm = getFragmentManager();

    if (fm.getBackStackEntryCount() > 0) {
        fm.popBackStack();
        mCurrentPath = FileUtils.cutLastSegmentOfPath(mCurrentPath);
        updateTitle();
    } else {
        setResult(RESULT_CANCELED);
        super.onBackPressed();
    }
}
 
源代码9 项目: Pano360   文件: FilePickerActivity.java
@Override
public void onBackPressed() {
    FragmentManager fm = getFragmentManager();

    if (fm.getBackStackEntryCount() > 0) {
        fm.popBackStack();
        mCurrentPath = FileUtils.cutLastSegmentOfPath(mCurrentPath);
        updateTitle();
    } else {
        setResult(RESULT_CANCELED);
        super.onBackPressed();
    }
}
 
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (currentPage) {
        case REGISTER_IR_PAGE:
        case MANAGE_VIRTUAL_PROFILE_PAGE:
            FragmentManager fm = getFragmentManager();
            fm.popBackStack();
            currentPage--;
            break;
        default:
            finish();

    }
    return true;
}
 
源代码11 项目: beaconloc   文件: BaseActivity.java
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            FragmentManager fm = getFragmentManager();
            if (fm.getBackStackEntryCount() > 0) {
                fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
            } else {
                finish();
            }
            return true;
        case R.id.action_settings:
            launchSettingsActivity();
            return true;
        case R.id.action_view_on_github:
            launchGitHubPage();
            return true;
        case R.id.action_help:
            launchHelpPage();
            return true;
        case R.id.action_donate:
            launchDonatePage();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
 
源代码12 项目: Pix-Art-Messenger   文件: ConversationsActivity.java
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (MenuDoubleTabUtil.shouldIgnoreTap()) {
        return false;
    }
    switch (item.getItemId()) {
        case android.R.id.home:
            FragmentManager fm = getFragmentManager();
            if (fm.getBackStackEntryCount() > 0) {
                try {
                    fm.popBackStack();
                } catch (IllegalStateException e) {
                    Log.w(Config.LOGTAG, "Unable to pop back stack after pressing home button");
                }
                return true;
            }
            break;
        case R.id.action_scan_qr_code:
            UriHandlerActivity.scan(this);
            return true;
        case R.id.action_check_updates:
            if (xmppConnectionService.hasInternetConnection()) {
                openInstallFromUnknownSourcesDialogIfNeeded(true);
            } else {
                ToastCompat.makeText(this, R.string.account_status_no_internet, Toast.LENGTH_LONG).show();
            }
            break;
        case R.id.action_invite_user:
            inviteUser();
            break;
    }
    return super.onOptionsItemSelected(item);
}
 
源代码13 项目: Hews   文件: SettingsActivity.java
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == android.R.id.home) {
        FragmentManager fm = getFragmentManager();
        if (fm.getBackStackEntryCount() > 0) {
            fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
        } else {
            finish();
        }
    }
    return super.onOptionsItemSelected(item);
}
 
源代码14 项目: android-kernel-tweaker   文件: MainActivity.java
@Override
public void onBackPressed(){
	FragmentManager fm = getFragmentManager();
	if (fm.getBackStackEntryCount() > 0) {
		Log.i("MainActivity", "popping backstack");
		fm.popBackStack();

	} else {
		Log.i("MainActivity", "nothing on backstack, calling super");
		super.onBackPressed();
	}
}
 
源代码15 项目: moviedb-android   文件: MainActivity.java
/**
 * Pops the last item from the back stack.
 * If searchView is opened it hides it.
 * reAttachMovieFragments re-creates our fragments this is due to a bug in the viewPager
 * restoreMovieDetailsState -> when we press back button we would like to restore our previous (if any)
 * saved state for the current fragment. We use custom backStack since the original doesn't save fragment's state.
 */
@Override
public void onBackPressed() {
    FragmentManager fm = getFragmentManager();

    if (mDrawerLayout.isDrawerOpen(mDrawerList))
        mDrawerLayout.closeDrawer(mDrawerList);
    else {
        if (searchViewItem.isActionViewExpanded())
            searchViewItem.collapseActionView();

        else if (fm.getBackStackEntryCount() > 0) {
            String backStackEntry = fm.getBackStackEntryAt(fm.getBackStackEntryCount() - 1).getName();
            if (backStackEntry.equals("movieList"))
                reAttachMovieFragments = true;

            if (backStackEntry.equals("TVList"))
                reAttachTVFragments = true;

            if (backStackEntry.equals("searchList:1"))
                reAttachMovieFragments = true;

            if (backStackEntry.equals("searchList:2"))
                reAttachTVFragments = true;

            restoreMovieDetailsState = true;
            restoreMovieDetailsAdapterState = false;
            if (orientationChanged)
                restoreMovieDetailsAdapterState = true;

            fm.popBackStack();
        } else {
            super.onBackPressed();
        }
    }

}
 
源代码16 项目: budget-envelopes   文件: EnvelopesActivity.java
public void topFragment(Class<?> cls, int transition, Bundle args) {
    Fragment frag = Fragment.instantiate(
        this,
        cls.getName(),
        args
    );
    FragmentManager fragmentManager = getFragmentManager();
    fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
    fragmentManager.beginTransaction()
     .replace(R.id.content_frame, frag)
     .setTransition(transition)
     .commit();
    fragmentManager.executePendingTransactions();
    configureFragment(frag);
}
 
源代码17 项目: android-showcase-template   文件: Navigator.java
public void goBack(BaseActivity activity) {
    FragmentManager fm = activity.getFragmentManager();
    fm.popBackStack();
}
 
/**
 * 一つ前のFragmentに戻る.
 */
private void back() {
    FragmentManager fm = getActivity().getFragmentManager();
    fm.popBackStack();
}
 
源代码19 项目: Hews   文件: CommentsActivity.java
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            if (mIsInReplyMode) {
                showDiscardReplyDialog();
                return true;
            }
            FragmentManager fm = getFragmentManager();
            if (fm.getBackStackEntryCount() > 0) {
                fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
            } else {
                finish();
            }
            break;

        case R.id.action_open_post:
            if (mUrl != null) {
                if (mChromeCustomTabsHelper != null) {
                    // build CustomTabs UI
                    CustomTabsIntent.Builder intentBuilder = new CustomTabsIntent.Builder();
                    Utils.setupIntentBuilder(intentBuilder, this, prefs);
                    ChromeCustomTabsHelper.openCustomTab(this, intentBuilder.build(),
                        Utils.validateAndParseUri(mUrl, mPostId), null);
                } else {
                    Intent urlIntent = new Intent(Intent.ACTION_VIEW);
                    urlIntent.setData(Utils.validateAndParseUri(mUrl, mPostId));
                    startActivity(urlIntent);
                }
            }
            break;

        case R.id.action_bookmark:
            changeBookmarkState();
            break;

        case R.id.action_upvote:
            vote(mPostId, Constants.VOTE_UP);
            break;

        case R.id.action_reply:
            if (!Utils.isOnline(this)) {
                Utils.showLongToast(this, R.string.no_connection_prompt);
                return false;
            }
            switchReplyMode(true, mPostId);
            break;

        case R.id.action_refresh:
            CommentsFragment commentFragment =
                (CommentsFragment) getFragmentManager().findFragmentByTag(Constants.FRAGMENT_TAG_COMMENT);
            commentFragment.getPresenter().refresh();
            break;

        case R.id.action_share:
            Intent sendIntent = new Intent();
            sendIntent.setAction(Intent.ACTION_SEND);
            String commentUrl = "https://news.ycombinator.com/item?id=" + mPostId;
            sendIntent.putExtra(Intent.EXTRA_TEXT, commentUrl);
            sendIntent.setType("text/plain");
            startActivity(Intent.createChooser(sendIntent, getString(R.string.share_link_to)));
            break;

        case R.id.action_typography:
            if (!mWindow.isWindowShowing()) {
                mWindow.show();
            } else {
                mWindow.dismiss();
            }
            break;
    }
    return super.onOptionsItemSelected(item);
}
 
源代码20 项目: linphone-android   文件: MainActivity.java
protected void changeFragment(Fragment fragment, String name, boolean isChild) {
    FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction transaction = fragmentManager.beginTransaction();

    if (transaction.isAddToBackStackAllowed()) {
        int count = fragmentManager.getBackStackEntryCount();
        if (count > 0) {
            FragmentManager.BackStackEntry entry =
                    fragmentManager.getBackStackEntryAt(count - 1);

            if (entry != null && name.equals(entry.getName())) {
                fragmentManager.popBackStack();
                if (!isChild) {
                    // We just removed it's duplicate from the back stack
                    // And we want at least one in it
                    transaction.addToBackStack(name);
                }
            }
        }

        if (isChild) {
            transaction.addToBackStack(name);
        }
    }

    if (getResources().getBoolean(R.bool.hide_bottom_bar_on_second_level_views)) {
        if (isChild) {
            if (!isTablet()) {
                hideTabBar();
            }
        } else {
            showTabBar();
        }
    }

    Compatibility.setFragmentTransactionReorderingAllowed(transaction, false);
    if (isChild && isTablet()) {
        transaction.replace(R.id.fragmentContainer2, fragment, name);
        findViewById(R.id.fragmentContainer2).setVisibility(View.VISIBLE);
    } else {
        transaction.replace(R.id.fragmentContainer, fragment, name);
    }
    transaction.commitAllowingStateLoss();
    fragmentManager.executePendingTransactions();
}