android 加载 fragment 工具类

android 加载 fragment 工具类

不同项目直接拷贝,要求是support v4包下的fragment

/**
 * 加载fragment的工具类
 * 静态类方法
 */
public final class FragmentUtil {

    /**
     * 初始化fragment
     *
     * @param manager           fragment管理
     * @param layoutId          需要填充的布局id
     * @param fragmentClassName fragment
     * @param isReplace         是否需要替换
     * @return fragment			
     */
    public static Fragment initFragment(FragmentManager manager, int layoutId, String fragmentClassName, boolean isReplace) {
        if (manager == null || manager.isDestroyed()) {
            return null;
        }

        FragmentTransaction transaction = manager.beginTransaction();
        if (isReplace) {
            //需要强制替换,不需要判断
            Fragment fragment = Fragment.instantiate(DemoApplication.getContext(), fragmentClassName);
            transaction.replace(layoutId, fragment);
            transaction.commitNowAllowingStateLoss();
            return fragment;
        } else {
            Fragment fragment = manager.findFragmentById(layoutId);
            if (fragment == null || fragment.isDetached() || !isSameFragment(fragment, fragmentClassName)) {
                //需要强制替换,不需要判断
                Fragment newFragment = Fragment.instantiate(DemoApplication.getContext(), fragmentClassName);
                transaction.replace(layoutId, newFragment);
                transaction.commitNowAllowingStateLoss();
                return newFragment;
            } else {
                return fragment;
            }

        }
    }


    /**
     * 返回是否是同一个fragment对象实例
     *
     * @param fragment          fragment
     * @param fragmentClassName 类名
     * @return true 是
     */
    private static boolean isSameFragment(Fragment fragment, String fragmentClassName) {
        if (fragment == null || fragmentClassName == null || fragmentClassName.length() == 0) {
            return false;
        }
        if (fragmentClassName.equals(fragment.getClass().getName())) {
            return true;
        }
        return false;
    }
}

使用方法

FragmentUtil.initFragment(getSupportFragmentManager(), R.id.parking_content, ParkingFragment.class.getName(), true);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值