boolean showFragment(Fragment fragment, String ftag, FragType type, int anim) { FragmentManager fragmentManager = MainActivity.getInstance().getSupportFragmentManager(); if (getFragment(ftag) != null) { StringBuilder sb = new StringBuilder(); sb.append("Fragment:"); sb.append(fragment.getClass().getName()); sb.append(" Tag:"); sb.append(ftag); sb.append(" has exist!"); return false; } FragmentTransaction transaction = fragmentManager.beginTransaction(); if (anim != 0) transaction.setCustomAnimations(anim, 0); transaction.add(R.id.main_frame, fragment, ftag); // 只保留当前层和其下一�? if (fragmentStack.size() > 1) transaction.hide(fragmentStack.get(fragmentStack.size() - 2).second); transaction.setTransition(FragmentTransaction.TRANSIT_NONE); transaction.addToBackStack(ftag); pushFragment(fragment, ftag); transaction.commitAllowingStateLoss(); return true; }
private void clearBackStack() { FragmentManager fragmentManager = MainActivity.getInstance().getSupportFragmentManager(); int count = fragmentManager.getBackStackEntryCount(); if (count > 0) { BackStackEntry entry = fragmentManager.getBackStackEntryAt(0); fragmentManager.popBackStack(entry.getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE); popAllFragment(); } }
public boolean closeFragment() { try { FragmentManager fragmentManager = MainActivity.getInstance().getSupportFragmentManager(); int count = fragmentManager.getBackStackEntryCount(); if (count > 0) { BackStackEntry entry = fragmentManager.getBackStackEntryAt(count - 1); fragmentManager.popBackStack(entry.getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE); popFragment(1); return true; } } catch (Exception e) { } return false; }
private boolean naviMainFragment(String ftag) { FragmentManager fragmentManager = MainActivity.getInstance().getSupportFragmentManager(); int count = fragmentManager.getBackStackEntryCount(); for (int i = 0; i < count; i++) { BackStackEntry entry = fragmentManager.getBackStackEntryAt(i); if (entry != null && !TextUtils.isEmpty(ftag) && entry.getName().contains(ftag)) { if (i < count - 1) { BackStackEntry topEntry = fragmentManager.getBackStackEntryAt(i + 1); fragmentManager.popBackStack(topEntry.getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE); popFragment(fragmentStack.size() - i - 1); } return true; } } return false; }