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

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

源代码1 项目: Navigator   文件: NavigatorHelper.java
public boolean canGoBack(String tag, int container, FragmentManager fragmentManager) {
    if (TextUtils.isEmpty(tag)) {
        return (fragmentManager.getBackStackEntryCount() > 1);
    } else {
        List<FragmentManager.BackStackEntry> fragmentList = fragmentList();
        Fragment fragment = fragmentManager.findFragmentById(container);
        if (fragment != null && tag.equalsIgnoreCase(fragment.getTag())) {
            return false;
        }
        for (int i = 0; i < fragmentList.size(); i++) {
            if (tag.equalsIgnoreCase(fragmentList.get(i).getName())) {
                return true;
            }
        }
        return false;
    }
}
 
源代码2 项目: 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);
    }
}
 
源代码3 项目: Navigator   文件: NavigatorUtils.java
/**
 * @param tag point to return
 * @throws NavigatorException navigator specific error
 */
public void goBackToSpecificPoint(String tag) throws NavigatorException {
    FragmentManager fragmentManager = ((FragmentActivity) mContextReference.getContext()).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 {
                break;
            }
        }
    } else {
        Log.e(TAG, "no fragment found");
        String message = "Fragment with TAG[" + tag + "] not found into back stack entry";
        throw new NavigatorException(message);
    }
}
 
源代码4 项目: Navigator   文件: NavigatorUtils.java
/**
 * @param tag             point to return
 * @param container       id container
 * @param fragmentManager variable contain fragment stack
 * @return true if is possible return to tag param
 */
public boolean canGoBackToSpecificPoint(String tag, int container, FragmentManager fragmentManager) {
    if (TextUtils.isEmpty(tag)) {
        return (fragmentManager.getBackStackEntryCount() > 1);
    } else {
        List<FragmentManager.BackStackEntry> fragmentList = fragmentList();
        Fragment fragment = fragmentManager.findFragmentById(container);
        if (fragment != null && tag.equalsIgnoreCase(fragment.getTag())) {
            return false;
        }
        for (int i = 0; i < fragmentList.size(); i++) {
            if (tag.equalsIgnoreCase(fragmentList.get(i).getName())) {
                return true;
            }
        }
        return false;
    }
}
 
源代码5 项目: openshop.io-android   文件: MainActivity.java
/**
     * Method clear fragment backStack (back history). On bottom of stack will remain Fragment added by {@link #addInitialFragment()}.
     */
    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.popBackStackImmediate(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
    }
 
源代码6 项目: AcDisplay   文件: SettingsActivity.java
private int setTitleFromBackStack() {
    final int count = getFragmentManager().getBackStackEntryCount();

    if (count == 0) {
        if (mInitialTitleResId > 0) {
            setTitle(mInitialTitleResId);
        } else {
            setTitle(mInitialTitle);
        }
        return 0;
    }

    FragmentManager.BackStackEntry bse = getSupportFragmentManager().getBackStackEntryAt(count - 1);
    setTitleFromBackStackEntry(bse);

    return count;
}
 
源代码7 项目: HeadsUp   文件: SettingsActivity.java
private int setTitleFromBackStack() {
    final int count = getFragmentManager().getBackStackEntryCount();

    if (count == 0) {
        if (mInitialTitleResId > 0) {
            setTitle(mInitialTitleResId);
        } else {
            setTitle(mInitialTitle);
        }
        return 0;
    }

    FragmentManager.BackStackEntry bse = getSupportFragmentManager().getBackStackEntryAt(count - 1);
    setTitleFromBackStackEntry(bse);

    return count;
}
 
源代码8 项目: Androzic   文件: MainActivity.java
@Override
public void addFragment(Fragment fragment, String tag)
{
	FragmentManager fm = getSupportFragmentManager();
	// Get topmost fragment
	Fragment parent;
	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();
}
 
源代码9 项目: AndroidUtilCode   文件: FragmentUtils.java
/**
 * Pop all fragments.
 *
 * @param fm The manager of fragment.
 */
public static void popAll(@NonNull final FragmentManager fm, final boolean isImmediate) {
    if (fm.getBackStackEntryCount() > 0) {
        FragmentManager.BackStackEntry entry = fm.getBackStackEntryAt(0);
        if (isImmediate) {
            fm.popBackStackImmediate(entry.getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
        } else {
            fm.popBackStack(entry.getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
        }
    }
}
 
源代码10 项目: Navigator   文件: NavigatorUtils.java
/**
 * @return tag of fragment that is actually visible, return null if no fragment are added in back stack
 */
public String getActualTag() {
    List<FragmentManager.BackStackEntry> fragmentList = fragmentList();
    if (fragmentList == null || fragmentList.size() == 0) {
        return null;
    }
    return fragmentList.get(fragmentList.size() - 1).getName();
}
 
源代码11 项目: AcDisplay   文件: SettingsActivity.java
private void setTitleFromBackStackEntry(FragmentManager.BackStackEntry bse) {
    final CharSequence title;
    final int titleRes = bse.getBreadCrumbTitleRes();
    if (titleRes > 0) {
        title = getText(titleRes);
    } else {
        title = bse.getBreadCrumbTitle();
    }
    if (title != null) {
        setTitle(title);
    }
}
 
源代码12 项目: HeadsUp   文件: SettingsActivity.java
private void setTitleFromBackStackEntry(FragmentManager.BackStackEntry bse) {
    final CharSequence title;
    final int titleRes = bse.getBreadCrumbTitleRes();
    if (titleRes > 0) {
        title = getText(titleRes);
    } else {
        title = bse.getBreadCrumbTitle();
    }
    if (title != null) {
        setTitle(title);
    }
}
 
源代码13 项目: Navigator   文件: NavigatorUtils.java
/**
 * @param tag fragment tag
 * @return true if fragment is actual visible, otherwise false
 */
public boolean isActualShowing(String tag) {
    List<FragmentManager.BackStackEntry> fragmentList = fragmentList();
    return fragmentList.get(fragmentList.size() - 1).getName().equals(tag);
}