• Fragment相关→FragmentUtils.java→Demo

    addFragment              : 新增fragment
    removeFragment           : 移除fragment
    replaceFragment          : 替换fragment
    popFragment              : 出栈fragment
    popToFragment            : 出栈到指定fragment popAddFragment : 先出栈后新增fragment hideFragment : 隐藏fragment showFragment : 显示fragment hideShowFragment : 先隐藏后显示fragment getLastAddFragment : 获取最后加入的fragment getLastAddFragmentInStack: 获取栈中最后加入的fragment getTopShowFragment : 获取顶层可见fragment getTopShowFragmentInStack: 获取栈中顶层可见fragment findFragment : 查找fragment getPreFragment : 获取目标fragment的前一个fragment getFragments : 获取同级别的fragment getAllFragments : 获取所有fragment getAllFragmentsInStack : 获取栈中所有fragment setBackgroundColor : 设置背景色 setBackgroundResource : 设置背景资源 setBackground : 设置背景

具体路线

import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.ColorInt;
import android.support.annotation.DrawableRes; import android.support.annotation.NonNull; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.view.View; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * <pre> * author: Blankj * blog : http://blankj.com * time : 2017/1/17 * desc : Fragment相关工具类 * </pre> */ public class FragmentUtils { private FragmentUtils() { throw new UnsupportedOperationException("u can't instantiate me..."); } private static final int TYPE_ADD_FRAGMENT = 0x01 << 0; private static final int TYPE_REMOVE_FRAGMENT = 0x01 << 1; private static final int TYPE_REPLACE_FRAGMENT = 0x01 << 2; private static final int TYPE_HIDE_FRAGMENT = 0x01 << 3; private static final int TYPE_SHOW_FRAGMENT = 0x01 << 4; private static final int TYPE_HIDE_SHOW_FRAGMENT = 0x01 << 5; private static final int TYPE_POP_ADD_FRAGMENT = 0x01 << 6; private static final String ARGS_ID = "args_id"; private static final String ARGS_IS_HIDE = "args_is_hide"; private static final String ARGS_IS_ADD_STACK = "args_is_add_stack"; /** * 新增fragment * * @param fragmentManager fragment管理器 * @param containerId 布局Id * @param fragment fragment * @return fragment */ public static Fragment addFragment(@NonNull FragmentManager fragmentManager, @NonNull Fragment fragment, int containerId) { return addFragment(fragmentManager, fragment, containerId, false); } /** * 新增fragment * * @param fragmentManager fragment管理器 * @param containerId 布局Id * @param fragment fragment * @param isHide 是否显示 * @return fragment */ public static Fragment addFragment(@NonNull FragmentManager fragmentManager, @NonNull Fragment fragment, int containerId, boolean isHide) { return addFragment(fragmentManager, fragment, containerId, isHide, false); } /** * 新增fragment * * @param fragmentManager fragment管理器 * @param containerId 布局Id * @param fragment fragment * @param isHide 是否显示 * @param isAddStack 是否入回退栈 * @return fragment */ public static Fragment addFragment(@NonNull FragmentManager fragmentManager, @NonNull Fragment fragment, int containerId, boolean isHide, boolean isAddStack) { putArgs(fragment, new Args(containerId, isHide, isAddStack)); return operateFragment(fragmentManager, null, fragment, TYPE_ADD_FRAGMENT); } /** * 新增fragment * * @param fragmentManager fragment管理器 * @param containerId 布局Id * @param fragment fragment * @param isAddStack 是否入回退栈 * @param sharedElement 共享元素 * @return fragment */ public static Fragment addFragment(@NonNull FragmentManager fragmentManager, @NonNull Fragment fragment, int containerId, boolean isAddStack, SharedElement... sharedElement) { putArgs(fragment, new Args(containerId, false, isAddStack)); return operateFragment(fragmentManager, null, fragment, TYPE_ADD_FRAGMENT, sharedElement); } /** * 移除fragment * * @param fragment fragment * @return fragment */ public static Fragment removeFragment(@NonNull Fragment fragment) { return operateFragment(fragment.getFragmentManager(), null, fragment, TYPE_REMOVE_FRAGMENT); } /** * 替换fragment * * @param srcFragment 源fragment * @param destFragment 目标fragment * @param isAddStack 是否入回退栈 * @return {@code null} 失败 */ public static Fragment replaceFragment(@NonNull Fragment srcFragment, @NonNull Fragment destFragment, boolean isAddStack) { if (srcFragment.getArguments() == null) return null; int containerId = srcFragment.getArguments().getInt(ARGS_ID); if (containerId == 0) return null; return replaceFragment(srcFragment.getFragmentManager(), containerId, destFragment, isAddStack); } /** * 替换fragment * * @param fragmentManager fragment管理器 * @param containerId 布局Id * @param fragment fragment * @param isAddStack 是否入回退栈 * @return fragment */ public static Fragment replaceFragment(@NonNull FragmentManager fragmentManager, int containerId, @NonNull Fragment fragment, boolean isAddStack) { putArgs(fragment, new Args(containerId, false, isAddStack)); return operateFragment(fragmentManager, null, fragment, TYPE_REPLACE_FRAGMENT); } /** * 出栈fragment * * @param fragmentManager fragment管理器 * @return {@code true}: 出栈成功<br>{@code false}: 出栈失败 */ public static boolean popFragment(@NonNull FragmentManager fragmentManager) { return fragmentManager.popBackStackImmediate(); } /** * 出栈到指定fragment * * @param fragmentManager fragment管理器 * @param fragmentClass Fragment类 * @param isIncludeSelf 是否包括Fragment类自己 * @return {@code true}: 出栈成功<br>{@code false}: 出栈失败 */ public static boolean popToFragment(@NonNull FragmentManager fragmentManager, Class<? extends Fragment> fragmentClass, boolean isIncludeSelf) { return fragmentManager.popBackStackImmediate(fragmentClass.getName(), isIncludeSelf ? FragmentManager.POP_BACK_STACK_INCLUSIVE : 0); } /** * 先出栈后新增fragment * * @param fragmentManager fragment管理器 * @param containerId 布局Id * @param fragment fragment * @param isAddStack 是否入回退栈 * @return fragment */ 

转载于:https://www.cnblogs.com/wangfeng520/p/6397140.html

Fragment管理工具类相关推荐

  1. java rabbitmq 工具类_RabbitMq通用管理工具类

    import java.io.IOException; import java.util.concurrent.TimeoutException; import com.rabbitmq.client ...

  2. Java微信公众号开发之微信素材管理工具类

    1.前言 微信公众号在使用接口的时候是通过传入media_id来进行调用的,所以在使用的接口的时候我们往往需要先上传素材,然后拿到微信返回给我们的media_id去调用相关接口,素材管理分为临时素材和 ...

  3. 一个好用的日志管理工具类MyLogger

    日志的规范管理,在项目中不容忽视,应用上线后将调试日志关闭也是十分必要的,下面就是一个好用的日志管理工具类(点击下载): import java.util.Hashtable;import andro ...

  4. mybatis sqlSession管理工具类

    mybatis会话集中管理: 第一:项目目录结构: 第二:工具类的编写: package com.sun.mybatis.utils;import java.io.Reader;import org. ...

  5. 【Android工具类】Activity管理工具类AppManager

    转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 import java.util.Stack;import android.app.Activity; im ...

  6. android 软键盘工具类,Android软键盘管理工具类

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 一个软键盘管理类,单例模式实现的. /** * 类功能描述:软键盘管理界面 * */ public class Inpu ...

  7. Android 线程池管理工具类

    转自Android 线程池 public class AppExecutors {private static final String TAG = "AppExecutors"; ...

  8. WifiAdmin wifi管理工具类

    public class WifiAdmin {private static final String TAG = WifiAdmin.class.getSimpleName();// 定义WifiM ...

  9. ( 持续更新,目前含 200+ 工具类 ) DevUtils 是一个 Android 工具库, 主要根据不同功能模块,封装快捷使用的工具类及 API 方法调用。

    DevUtils GitHub About ( 持续更新,目前含 200+ 工具类 ) Roadmap DevUtils 是一个 Android 工具库,主要根据不同功能模块,封装快捷使用的工具类及 ...

最新文章

  1. Rank() over()的用法
  2. pytorch优化器与学习率设置详解
  3. NeHe OpenGL第十课:3D世界
  4. 人工智能落地,商业化比技术更重要
  5. 常用系统存储过程有:
  6. 求多个四元数的平均数
  7. 十四.200创业课程获得百万--不良,不要启动
  8. [C++调试笔记]初始化
  9. html文档的文件头的主要作用是什么,文件头
  10. server sql 数据总行数_一种快速统计SQL Server每个表行数的方法
  11. Matlab画圆且坐标轴图片等比例显示
  12. 便宜的前端培训班都有哪些?
  13. 个人商业画布学习笔记
  14. html正方形项目符号,html自定义项目符号
  15. 计算机c盘用户名中文改英文,Win10电脑将中文登录用户名更改为英文名的方法
  16. 摩尔斯电码 — 摩尔斯密码
  17. 如何通便清肠快速见效_如何排毒清肠通便
  18. malloc,calloc区别
  19. 帝国cms发布文章对哪些数据表做了操作
  20. lenovo电脑的麦克风没有声音?声音小?甚至有杂音,无法聊天?

热门文章

  1. AGS Server 10.1 切图工具
  2. Google Map API 学习三
  3. P2P之UDP穿透NAT的原理与实现(转)
  4. Mac下Idea安装Git报错Xcrun问题的解决
  5. 模板标签及模板的继承与引用
  6. Windows和Linux如何使用Java代码实现关闭进程
  7. ITOO高校云平台V3.1--项目总结(一)
  8. PHP里10个鲜为人知但却非常有用的函数
  9. 花里胡哨,不协调统一的界面,正如看到一个穿花里胡哨衣服的人,让人作呕,不想接近。...
  10. dm365 resize