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

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

源代码1 项目: MVVMArms   文件: FragmentUtils.java
/**
 * 根据栈参数获取所有fragment
 * <p>需之前对fragment的操作都借助该工具类</p>
 *
 * @param fragmentManager fragment管理器
 * @param result          结果
 * @param isInStack       是否是栈中的
 * @return 栈中所有fragment
 */
private static List<FragmentNode> getAllFragmentsIsInStack(@NonNull FragmentManager fragmentManager,
                                                           List<FragmentNode> result,
                                                           boolean isInStack) {
    List<Fragment> fragments = fragmentManager.getFragments();
    if (fragments == null || fragments.isEmpty()) {
        return Collections.emptyList();
    }
    for (int i = fragments.size() - 1; i >= 0; --i) {
        Fragment fragment = fragments.get(i);
        if (fragment != null) {
            if (isInStack) {
                if (fragment.getArguments().getBoolean(ARGS_IS_ADD_STACK)) {
                    result.add(new FragmentNode(fragment, getAllFragmentsIsInStack(fragment.getChildFragmentManager(), new ArrayList<FragmentNode>(), true)));
                }
            } else {
                result.add(new FragmentNode(fragment, getAllFragmentsIsInStack(fragment.getChildFragmentManager(), new ArrayList<FragmentNode>(), false)));
            }
        }
    }
    return result;
}
 
源代码2 项目: Android-UtilCode   文件: FragmentUtils.java
/**
 * 根据栈参数获取同级别fragment
 *
 * @param fragmentManager fragment管理器
 * @param isInStack       是否是栈中的
 * @return 栈中同级别fragment
 */
private static List<Fragment> getFragmentsIsInStack(@NonNull FragmentManager fragmentManager, boolean isInStack) {
    List<Fragment> fragments = fragmentManager.getFragments();
    if (fragments == null || fragments.isEmpty()) return Collections.emptyList();
    List<Fragment> result = new ArrayList<>();
    for (int i = fragments.size() - 1; i >= 0; --i) {
        Fragment fragment = fragments.get(i);
        if (fragment != null) {
            if (isInStack) {
                if (fragment.getArguments().getBoolean(ARGS_IS_ADD_STACK)) {
                    result.add(fragment);
                }
            } else {
                result.add(fragment);
            }
        }
    }
    return result;
}
 
源代码3 项目: MVVMArms   文件: FragmentUtils.java
/**
 * 根据栈参数获取同级别fragment
 *
 * @param fragmentManager fragment管理器
 * @param isInStack       是否是栈中的
 * @return 栈中同级别fragment
 */
private static List<Fragment> getFragmentsIsInStack(@NonNull FragmentManager fragmentManager, boolean isInStack) {
    List<Fragment> fragments = fragmentManager.getFragments();
    if (fragments == null || fragments.isEmpty()) {
        return Collections.emptyList();
    }
    List<Fragment> result = new ArrayList<>();
    for (int i = fragments.size() - 1; i >= 0; --i) {
        Fragment fragment = fragments.get(i);
        if (fragment != null) {
            if (isInStack) {
                if (fragment.getArguments().getBoolean(ARGS_IS_ADD_STACK)) {
                    result.add(fragment);
                }
            } else {
                result.add(fragment);
            }
        }
    }
    return result;
}
 
源代码4 项目: android-task   文件: TargetMethodFinder.java
@SuppressLint("RestrictedApi")
private static Pair<Method, Object> findMethodInFragmentManager(FragmentManager fragmentManager, Class<?> resultType,
                                                                Class<? extends TaskResult> annotation, Task<?> task, boolean compareFragmentIndex) {

    if (fragmentManager == null) {
        return null;
    }

    List<Fragment> fragments = fragmentManager.getFragments();
    if (fragments == null) {
        return null;
    }

    for (Fragment childFragment : fragments) {
        if (childFragment == null || childFragment.getActivity() == null) {
            continue;
        }
        Pair<Method, Object> pair = findMethodInFragment(childFragment, childFragment.getClass(), resultType, annotation, task, compareFragmentIndex);
        if (pair != null) {
            return pair;
        }
    }

    return null;
}
 
源代码5 项目: styT   文件: FragmentUtils.java
/**
 * 根据栈参数获取同级别fragment
 *
 * @param fragmentManager fragment管理器
 * @param isInStack       是否是栈中的
 * @return 栈中同级别fragment
 */
private static List<Fragment> getFragmentsIsInStack(@NonNull final FragmentManager fragmentManager, final boolean isInStack) {
    List<Fragment> fragments = fragmentManager.getFragments();
    if (fragments == null || fragments.isEmpty()) return Collections.emptyList();
    List<Fragment> result = new ArrayList<>();
    for (int i = fragments.size() - 1; i >= 0; --i) {
        Fragment fragment = fragments.get(i);
        if (fragment != null) {
            if (isInStack) {
                if (fragment.getArguments().getBoolean(ARGS_IS_ADD_STACK)) {
                    result.add(fragment);
                }
            } else {
                result.add(fragment);
            }
        }
    }
    return result;
}
 
源代码6 项目: styT   文件: FragmentUtils.java
/**
 * 根据栈参数获取所有fragment
 * <p>需之前对fragment的操作都借助该工具类</p>
 *
 * @param fragmentManager fragment管理器
 * @param result          结果
 * @param isInStack       是否是栈中的
 * @return 栈中所有fragment
 */
private static List<FragmentNode> getAllFragmentsIsInStack(@NonNull final FragmentManager fragmentManager,
                                                           final List<FragmentNode> result,
                                                           final boolean isInStack) {
    List<Fragment> fragments = fragmentManager.getFragments();
    if (fragments == null || fragments.isEmpty()) return Collections.emptyList();
    for (int i = fragments.size() - 1; i >= 0; --i) {
        Fragment fragment = fragments.get(i);
        if (fragment != null) {
            if (isInStack) {
                if (fragment.getArguments().getBoolean(ARGS_IS_ADD_STACK)) {
                    result.add(new FragmentNode(fragment, getAllFragmentsIsInStack(fragment.getChildFragmentManager(), new ArrayList<FragmentNode>(), true)));
                }
            } else {
                result.add(new FragmentNode(fragment, getAllFragmentsIsInStack(fragment.getChildFragmentManager(), new ArrayList<FragmentNode>(), false)));
            }
        }
    }
    return result;
}
 
源代码7 项目: timecat   文件: BaseActivity.java
protected void recoverFragment(String currentFragmentTag) {
    if (currentFragmentTag == null) {
        return;
    }
    FragmentManager fm = getSupportFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    List<Fragment> fragments = fm.getFragments();
    for (Fragment fragment : fragments) {
        if (fragment.getTag().equals(currentFragmentTag)) {
            ft.show(fragment);
        } else {
            ft.hide(fragment);
        }
    }
    ft.commitAllowingStateLoss();
    Fragment current = fm.findFragmentByTag(currentFragmentTag);
    switchFragment(current);
}
 
源代码8 项目: Android-UtilCode   文件: FragmentUtils.java
/**
 * 处理fragment回退键
 * <p>如果fragment实现了OnBackClickListener接口,返回{@code true}: 表示已消费回退键事件,反之则没消费</p>
 * <p>具体示例见FragmentActivity</p>
 *
 * @param fragmentManager fragment管理器
 * @return 是否消费回退事件
 */
public static boolean dispatchBackPress(@NonNull FragmentManager fragmentManager) {
    List<Fragment> fragments = fragmentManager.getFragments();
    if (fragments == null || fragments.isEmpty()) return false;
    for (int i = fragments.size() - 1; i >= 0; --i) {
        Fragment fragment = fragments.get(i);
        if (fragment != null
                && fragment.isResumed()
                && fragment.isVisible()
                && fragment.getUserVisibleHint()
                && fragment instanceof OnBackClickListener
                && ((OnBackClickListener) fragment).onBackClick()) {
            return true;
        }
    }
    return false;
}
 
源代码9 项目: android-task   文件: FragmentIdHelper.java
@SuppressLint("RestrictedApi")
private static String getIndex(Fragment fragment) {
    String index;
    if (fragment.getParentFragment() != null) {
        index = getIndex(fragment.getParentFragment()) + "-";
    } else {
        index = "";
    }

    FragmentManager fragmentManager = fragment.getFragmentManager();
    if (fragmentManager != null) {
        List<Fragment> fragments = fragmentManager.getFragments();
        if (fragments != null && !fragments.isEmpty()) {
            for (int i = 0; i < fragments.size(); i++) {
                if (fragment.equals(fragments.get(i))) {
                    index += i;
                    break;
                }
            }
        }
    }

    return index;
}
 
源代码10 项目: TikTok   文件: FragmentUtils.java
/**
 * 处理fragment回退键
 * <p>如果fragment实现了OnBackClickListener接口,返回{@code true}: 表示已消费回退键事件,反之则没消费</p>
 * <p>具体示例见FragmentActivity</p>
 *
 * @param fragmentManager fragment管理器
 * @return 是否消费回退事件
 */
public static boolean dispatchBackPress(@NonNull FragmentManager fragmentManager) {
    List<Fragment> fragments = fragmentManager.getFragments();
    if (fragments == null || fragments.isEmpty())
        return false;
    for (int i = fragments.size() - 1; i >= 0; --i) {
        Fragment fragment = fragments.get(i);
        if (fragment != null
                && fragment.isResumed()
                && fragment.isVisible()
                && fragment.getUserVisibleHint()
                && fragment instanceof OnBackClickListener
                && ((OnBackClickListener) fragment).onBackClick()) {
            return true;
        }
    }
    return false;
}
 
源代码11 项目: Android-UtilCode   文件: FragmentUtils.java
/**
 * 根据栈参数获取所有fragment
 * <p>需之前对fragment的操作都借助该工具类</p>
 *
 * @param fragmentManager fragment管理器
 * @param result          结果
 * @param isInStack       是否是栈中的
 * @return 栈中所有fragment
 */
private static List<FragmentNode> getAllFragmentsIsInStack(@NonNull FragmentManager fragmentManager,
                                                           List<FragmentNode> result,
                                                           boolean isInStack) {
    List<Fragment> fragments = fragmentManager.getFragments();
    if (fragments == null || fragments.isEmpty()) return Collections.emptyList();
    for (int i = fragments.size() - 1; i >= 0; --i) {
        Fragment fragment = fragments.get(i);
        if (fragment != null) {
            if (isInStack) {
                if (fragment.getArguments().getBoolean(ARGS_IS_ADD_STACK)) {
                    result.add(new FragmentNode(fragment, getAllFragmentsIsInStack(fragment.getChildFragmentManager(), new ArrayList<FragmentNode>(), true)));
                }
            } else {
                result.add(new FragmentNode(fragment, getAllFragmentsIsInStack(fragment.getChildFragmentManager(), new ArrayList<FragmentNode>(), false)));
            }
        }
    }
    return result;
}
 
源代码12 项目: MVVMArms   文件: FragmentUtils.java
/**
 * 处理fragment回退键
 * <p>如果fragment实现了OnBackClickListener接口,返回{@code true}: 表示已消费回退键事件,反之则没消费</p>
 * <p>具体示例见FragmentActivity</p>
 *
 * @param fragmentManager fragment管理器
 * @return 是否消费回退事件
 */
public static boolean dispatchBackPress(@NonNull FragmentManager fragmentManager) {
    List<Fragment> fragments = fragmentManager.getFragments();
    if (fragments == null || fragments.isEmpty()) {
        return false;
    }
    for (int i = fragments.size() - 1; i >= 0; --i) {
        Fragment fragment = fragments.get(i);
        if (fragment != null
                && fragment.isResumed()
                && fragment.isVisible()
                && fragment.getUserVisibleHint()
                && fragment instanceof OnBackClickListener
                && ((OnBackClickListener) fragment).onBackClick()) {
            return true;
        }
    }
    return false;
}
 
源代码13 项目: EventApp   文件: FragmentHelper.java
public static boolean isCurrentFragment(FragmentManager fragmentManager,
                                        Class<? extends Fragment> clazz) {
    Fragment fragment = null;
    List<Fragment> fragments = fragmentManager.getFragments();
    int index = fragments.size();
    while (fragment == null && index >= 0) {
        index--;
        fragment = fragments.get(index);
    }
    return fragment != null && fragment.getClass().equals(clazz);
}
 
源代码14 项目: StatusView   文件: LazyLoadFragment.java
/**
 * show()、hide()场景下,当前fragment没隐藏,如果其子fragment也没隐藏,则尝试让子fragment请求数据
 */
private void dispatchParentHiddenState() {
    FragmentManager fragmentManager = getChildFragmentManager();
    List<Fragment> fragments = fragmentManager.getFragments();
    if (fragments.isEmpty()) {
        return;
    }
    for (Fragment child : fragments) {
        if (child instanceof LazyLoadFragment && !((LazyLoadFragment) child).isHidden) {
            ((LazyLoadFragment) child).tryLoadData1();
        }
    }
}
 
源代码15 项目: iSCAU-Android   文件: UIHelper.java
private static void deAttachAllFragments(ActionBarActivity act){
    FragmentManager fragmentManager = act.getSupportFragmentManager();
    FragmentTransaction ft = fragmentManager.beginTransaction();
    List<Fragment> fragments = fragmentManager.getFragments();
    if (fragments == null) return;
    for(Fragment fragment : fragments){
        if (fragment.isVisible())
            ft.hide(fragment);
    }
    ft.commitAllowingStateLoss();
}
 
源代码16 项目: LazyLoadFragment   文件: LazyLoadFragment.java
/**
 * ViewPager场景下,当前fragment可见,如果其子fragment也可见,则尝试让子fragment加载请求
 */
private void dispatchParentVisibleState() {
    FragmentManager fragmentManager = getChildFragmentManager();
    List<Fragment> fragments = fragmentManager.getFragments();
    if (fragments.isEmpty()) {
        return;
    }
    for (Fragment child : fragments) {
        if (child instanceof LazyLoadFragment && ((LazyLoadFragment) child).isVisibleToUser) {
            ((LazyLoadFragment) child).tryLoadData();
        }
    }
}
 
源代码17 项目: FastAccess   文件: AppHelper.java
@Nullable public static Fragment getVisibleFragment(@NonNull FragmentManager manager) {
    List<Fragment> fragments = manager.getFragments();
    if (fragments != null && !fragments.isEmpty()) {
        for (Fragment fragment : fragments) {
            if (fragment != null && fragment.isVisible()) {
                Logger.e(fragment.getClass().getSimpleName(), fragment.isVisible());
                return fragment;
            }
        }
    }
    return null;
}
 
源代码18 项目: DeviceInfo   文件: FragmentUtil.java
public void clearBackStackFragmets()
{

   /* if (1==1)
        return;*/
    try {
        // in my case I get the support fragment manager, it should work with the native one too
        FragmentManager fragmentManager = mActivity.getSupportFragmentManager();
        // this will clear the back stack and displays no animation on the screen
        fragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
        // fragmentManager.popBackStackImmediate(SplashFragment.class.getCanonicalName(),FragmentManager.POP_BACK_STACK_INCLUSIVE);
        List<Fragment> fragmentList = fragmentManager.getFragments();
        if (fragmentList != null && !fragmentList.isEmpty())
        {
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            for (Fragment fragment : fragmentList)
            {
                if (fragment != null)
                {
                    fragmentTransaction.remove(fragment);
                }
            }
            fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
            fragmentTransaction.commit();
        }
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }

}
 
源代码19 项目: android-task   文件: Task.java
@SuppressLint("RestrictedApi")
private Fragment findFragment(FragmentManager manager) {
    if (manager == null) {
        return null;
    }

    List<Fragment> fragments = manager.getFragments();
    if (fragments == null) {
        return null;
    }

    for (Fragment fragment : fragments) {
        if (fragment == null) {
            continue;
        }
        String fragmentId = FragmentIdHelper.getFragmentId(fragment);
        if (mFragmentId.equals(fragmentId)) {
            return fragment;
        }

        if (FragmentHack.getChildFragmentManager(fragment) != null) {
            Fragment child = findFragment(FragmentHack.getChildFragmentManager(fragment));
            if (child != null) {
                return child;
            }
        }
    }

    return null;
}
 
源代码20 项目: SimpleProject   文件: BaseCommonActivity.java
/**
 * 恢复嵌套的Fragment
 */
public void restoreChildFragment(Fragment currentFragment) {
	FragmentManager fm = currentFragment.getFragmentManager();
	List<Fragment> fragmentList = fm != null ? fm.getFragments() : null;
	if (CollectionUtil.isEmpty(fragmentList)) {
		return;
	}

	for (Fragment fragment : fragmentList) {
		fragment.onAttach((Context)context);
	}
}