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

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

源代码1 项目: FragmentBackHandler   文件: BackHandlerHelper.java
/**
 * 将back事件分发给 FragmentManager 中管理的子Fragment,如果该 FragmentManager 中的所有Fragment都
 * 没有处理back事件,则尝试 FragmentManager.popBackStack()
 *
 * @return 如果处理了back键则返回 <b>true</b>
 * @see #handleBackPress(Fragment)
 * @see #handleBackPress(FragmentActivity)
 */
public static boolean handleBackPress(FragmentManager fragmentManager) {
    List<Fragment> fragments = fragmentManager.getFragments();

    if (fragments == null) return false;

    for (int i = fragments.size() - 1; i >= 0; i--) {
        Fragment child = fragments.get(i);

        if (isFragmentBackHandled(child)) {
            return true;
        }
    }

    if (fragmentManager.getBackStackEntryCount() > 0) {
        fragmentManager.popBackStack();
        return true;
    }
    return false;
}
 
private void onFriendPickerDone(FriendPickerFragment fragment) {
    FragmentManager fm = getSupportFragmentManager();
    fm.popBackStack();

    String results = "";

    Collection<GraphUser> selection = fragment.getSelection();
    if (selection != null && selection.size() > 0) {
        ArrayList<String> names = new ArrayList<String>();
        for (GraphUser user : selection) {
            names.add(user.getName());
        }
        results = TextUtils.join(", ", names);
    } else {
        results = getString(R.string.no_friends_selected);
    }

    showAlert(getString(R.string.you_picked), results);
}
 
源代码3 项目: Navigator   文件: NavigatorHelper.java
public void goBackTo(String tag) throws NavigatorException {
    FragmentManager fragmentManager = ((FragmentActivity) mContext).getSupportFragmentManager();
    if (fragmentManager.findFragmentByTag(tag) != null) {
        List<FragmentManager.BackStackEntry> fragmentList = fragmentList();
        Collections.reverse(fragmentList);
        for (int i = 0; i < fragmentList.size(); i++) {
            if (!tag.equalsIgnoreCase(fragmentList.get(i).getName())) {
                fragmentManager.popBackStack();
            } else {
                listStep.add(tag);
                return;
            }
        }
    } else {
        Log.e(TAG, "no fragment found");
        String message = "Fragment with TAG[" + tag + "] not found into backstack entry";
        throw new NavigatorException(message);
    }
}
 
源代码4 项目: Cangol-appcore   文件: MainActivity.java
@Override
public boolean onNavigateUp() {
    FragmentManager fm = this.getSupportFragmentManager();
    if(fm.getBackStackEntryCount()>1){
        fm.popBackStack();
        return true;
    }else{
        super.onBackPressed();
        return true;
    }
}
 
源代码5 项目: Readily   文件: MainActivity.java
private void startFileListFragment(){
	FragmentManager fragmentManager = getSupportFragmentManager();
	fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
	fragmentManager.beginTransaction().
			replace(R.id.content_layout, new FileListFragment()).
			commit();
}
 
源代码6 项目: Silence   文件: ApplicationPreferencesActivity.java
@Override
public boolean onSupportNavigateUp() {
  FragmentManager fragmentManager = getSupportFragmentManager();
  if (fragmentManager.getBackStackEntryCount() > 0) {
    fragmentManager.popBackStack();
  } else {
    Intent intent = new Intent(this, ConversationListActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
    finish();
  }
  return true;
}
 
源代码7 项目: bubble   文件: MainActivity.java
private boolean popFragment() {
    FragmentManager fragmentManager = getSupportFragmentManager();
    if (fragmentManager.getBackStackEntryCount() > 0) {
        fragmentManager.popBackStack();
        return true;
    }
    return false;
}
 
源代码8 项目: 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);
				}
				fm.popBackStack();
				return true;
			}
			else
			{
				if (mDrawerToggle.onOptionsItemSelected(item))
				{
					return true;
				}
			}
		default:
			return super.onOptionsItemSelected(item);
	}
}
 
源代码9 项目: android   文件: MainActivity.java
@Override
public void onBackPressed() {
    final FragmentManager fm = getSupportFragmentManager();
    final Fragment fragment = fm.findFragmentByTag(Const.FragmentTags.MAP_INFO_EXPANDED);
    if (fragment != null) {
        fm.popBackStack();
    } else {
        super.onBackPressed();
    }
}
 
源代码10 项目: incubator-taverna-mobile   文件: ActivityUtils.java
public static void addFragmentToActivity(FragmentManager fragmentManager, Fragment fragment,
                                         int frameId) {

    for (int i = 0; i < fragmentManager.getBackStackEntryCount(); ++i) {
        fragmentManager.popBackStack();
    }
    FragmentTransaction transaction = fragmentManager.beginTransaction();
    transaction.replace(frameId, fragment);
    transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
    transaction.commit();
}
 
源代码11 项目: droidkaigi2016   文件: MainActivity.java
@Override
public void onBackPressed() {
    if (binding.drawer.isDrawerOpen(GravityCompat.START)) {
        binding.drawer.closeDrawer(GravityCompat.START);
        return;
    }
    FragmentManager fm = getSupportFragmentManager();
    if (fm.getBackStackEntryCount() > 0) {
        fm.popBackStack();
        return;
    }
    super.onBackPressed();
}
 
源代码12 项目: px-android   文件: CheckoutActivity.java
@Override
public void onBackPressed() {
    final FragmentManager fragmentManager = getSupportFragmentManager();
    if (fragmentManager != null) {
        final int backStackEntryCount = fragmentManager.getBackStackEntryCount();
        Fragment fragment = fragmentManager.findFragmentByTag(TAG_OFFLINE_METHODS_FRAGMENT);

        if (fragment instanceof BackHandler) {
            final boolean shouldHandleBack = ((BackHandler) fragment).handleBack();
            if (!shouldHandleBack) {
                return;
            }
        }

        fragment = fragmentManager.findFragmentByTag(CardFormWithFragment.TAG);
        if (fragment != null && fragment.getChildFragmentManager().getBackStackEntryCount() > 0) {
            fragment.getChildFragmentManager().popBackStack();
            return;
        }

        if (backStackEntryCount > 0) {
            fragmentManager.popBackStack();
            return;
        }

        fragment =
            FragmentUtil.getFragmentByTag(fragmentManager, PayButtonFragment.TAG, PayButtonFragment.class);
        if (fragment == null || !((PayButtonFragment) fragment).isExploding()) {
            super.onBackPressed();
        }
    }
}
 
源代码13 项目: Cangol-appcore   文件: DynamicActivity.java
@Override
public void onBackPressed() {
    FragmentManager fm = this.getSupportFragmentManager();
    if (fm.getBackStackEntryCount() > 1) {
        fm.popBackStack();
    } else {
        finish();
    }
}
 
源代码14 项目: shift   文件: ShiftLauncherView.java
private void addFragment(FragmentActivity activity, Fragment fragment, String tag, boolean isVisible) {
    FragmentManager manager = activity.getSupportFragmentManager();
    Fragment oldInstance = manager.findFragmentByTag(tag);
    if (oldInstance == null) {
        FragmentTransaction transaction = manager.beginTransaction();
        transaction.add(android.R.id.content, fragment, tag);
        if (!isVisible) {
            transaction.hide(fragment);
        } else if (tag.equals(TABS_TAG)) {
            manager.popBackStack(TABS_BACK_STACK, FragmentManager.POP_BACK_STACK_INCLUSIVE);
            transaction.addToBackStack(TABS_BACK_STACK);
        }
        transaction.commit();
    }
}
 
源代码15 项目: MongoExplorer   文件: SinglePaneActivity.java
@Override
public void onBackPressed() {
	FragmentManager fm = getSupportFragmentManager();

	if (fm.getBackStackEntryCount() > 0) {
		fm.popBackStack();
		return;
	}

	super.onBackPressed();
}
 
源代码16 项目: Cangol-appcore   文件: DynamicActivity.java
@Override
public boolean onNavigateUp() {
    FragmentManager fm = this.getSupportFragmentManager();
    if (fm.getBackStackEntryCount() > 1) {
        fm.popBackStack();
        return true;
    } else {
        finish();
        return true;
    }
}
 
源代码17 项目: SEAL-Demo   文件: HomeActivity.java
/**
 * This method allows to clear backStack
 */
public void clearFragmentBackStack() {
    // create a FragmentManager
    FragmentManager fm = getSupportFragmentManager();
    fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
 
源代码18 项目: state-machine-android   文件: BaseLoginState.java
protected void popFragment() {
    FragmentManager fragmentManager = getProvider().provideFragmentManager();
    fragmentManager.popBackStack();
}
 
源代码19 项目: Navigator   文件: NavigatorHelper.java
public void goBack() throws NavigatorException {
    FragmentManager fragmentManager = ((FragmentActivity) mContext).getSupportFragmentManager();
    if (canGoBack(fragmentManager)) {
        fragmentManager.popBackStack();
    }
}
 
源代码20 项目: AndroidMvc   文件: MvcActivity.java
private void performBackNav(final NavigationManager.Event.OnLocationBack event) {
    FragmentManager fm = getChildFragmentManager();

    NavLocation lastLoc = event.getLastValue();
    if (lastLoc != null) {
        String lastFragTag = getFragmentTag(lastLoc.getLocationId());
        final MvcFragment lastFrag = (MvcFragment) fm.findFragmentByTag(lastFragTag);

        if (lastFrag != null) {
            lastFrag.onPopAway();
        }
    }

    NavLocation currentLoc = event.getCurrentValue();
    if (currentLoc == null) {
        MvcActivity act = (MvcActivity) getActivity();
        act.actionsOnDestroy.add(new Runnable() {
            @Override
            public void run() {
                destroyNavigator(event.getNavigator());
                pendingNavActions.remove(this);
            }
        });

        MvcActivity mvcActivity = ((MvcActivity) getActivity());
        //Back to null which should finish the current activity
        mvcActivity.performSuperBackKeyPressed();
        mvcActivity.toPrintAppExitMessage = true;
    } else {
        String currentFragTag = getFragmentTag(currentLoc.getLocationId());
        final MvcFragment currentFrag = (MvcFragment) fm.findFragmentByTag(currentFragTag);
        if (currentFrag != null) {
            traverseFragmentAndSubFragments(currentFrag, new FragmentManipulator() {
                @Override
                public void manipulate(Fragment fragment) {
                    if (fragment != null && fragment instanceof MvcFragment) {
                        final MvcFragment frag = ((MvcFragment) fragment);
                        frag.aboutToPopOut = true;
                        frag.registerOnViewReadyListener(new Runnable() {
                            @Override
                            public void run() {
                                destroyNavigator(event.getNavigator());
                                frag.unregisterOnViewReadyListener(this);
                            }
                        });
                    }
                }
            });
        }

        if (event.isFastRewind()) {
            if (currentLoc.getPreviousLocation() == null) {
                if (fm.getBackStackEntryCount() <= 1) {
                    //Has reached bottom. Does nothing in this case
                    return;
                }

                //Pop fragments to the last
                int stackCount = fm.getBackStackEntryCount();
                int timesNeedToPop = 0;
                for (int i = 0; i < stackCount; i++) {
                    if (currentFragTag.equals(fm.getBackStackEntryAt(i).getName())) {
                        timesNeedToPop++;
                    }
                }

                if (timesNeedToPop > 1) {
                    for (int i = 0; i < stackCount - 1; i++) {
                        fm.popBackStack();
                    }
                    fm.executePendingTransactions();
                } else {
                    fm.popBackStack(currentFragTag, 0);
                }
                logger.trace("Navigation back: Fast rewind to home location {}", currentLoc.getLocationId());
            } else {
                String tag = getFragmentTag(currentLoc.getLocationId());
                fm.popBackStack(tag, 0);
                logger.trace("Navigation back: Fast rewind to given location {}", currentLoc.getLocationId());
            }
        } else {
            fm.popBackStack();
            logger.trace("Navigation back: On step back from {} to location {}",
                    event.getLastValue() != null ? event.getLastValue().getLocationId() : null,
                    currentLoc.getLocationId());
        }
    }
}