博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Fragment管理工具类
阅读量:4308 次
发布时间:2019-06-06

本文共 5802 字,大约阅读时间需要 19 分钟。

  • Fragment相关→→
    addFragment              : 新增fragmentremoveFragment           : 移除fragmentreplaceFragment          : 替换fragmentpopFragment              : 出栈fragmentpopToFragment            : 出栈到指定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; /** * 
 * author: Blankj * blog : http://blankj.com * time : 2017/1/17 * desc : Fragment相关工具类 * 
*/ 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}: 出栈成功
{ @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}: 出栈成功
{ @code false}: 出栈失败 */ public static boolean popToFragment(@NonNull FragmentManager fragmentManager, Class
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

你可能感兴趣的文章
设计模式08_适配器
查看>>
设计模式09_代理模式
查看>>
设计模式10_桥接
查看>>
设计模式11_装饰器
查看>>
设计模式12_外观模式
查看>>
设计模式13_享元模式
查看>>
设计模式14_组合结构
查看>>
设计模式15_模板
查看>>
海龟交易法则01_玩风险的交易者
查看>>
CTA策略02_boll
查看>>
vnpy通过jqdatasdk初始化实时数据及历史数据下载
查看>>
设计模式19_状态
查看>>
设计模式20_观察者
查看>>
vnpy学习10_常见坑02
查看>>
用时三个月,终于把所有的Python库全部整理了!拿去别客气!
查看>>
pd.stats.ols.MovingOLS以及替代
查看>>
vnpy学习11_增加测试评估指标
查看>>
资金流入流出计算方法
查看>>
海龟交易法则07_如何衡量风险
查看>>
海龟交易法则08_风险与资金管理
查看>>