2020-03-12

private synchronized void showFragment(Stack<Fragment> fragmentStack, Class cls, Bundle mBundle, String uuid) {
        if (fragmentStack != fragmentMap.get(mViewDataBinding.rgRadioGroup.getCheckedRadioButtonId()))
            return;
        Fragment fragmentTarget = getSupportFragmentManager().findFragmentByTag(uuid);
        FragmentTransaction tf = getSupportFragmentManager().beginTransaction();
        if (fragmentTarget == null) {
            fragmentTarget = fragmentNewInstance(cls, mBundle);
        }
        for (Fragment tmp : getSupportFragmentManager().getFragments()) {
            if (tmp instanceof SupportRequestManagerFragment) {
                continue;
            }
            String tag = tmp.getTag();
            if (TextUtils.isEmpty(tag)) {
                tag = UUID.randomUUID().toString();
                try {
                    FieldUtils.writeField(tmp, "mTag", tag);
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
            }
            if (tmp.getTag().equals(uuid)) {
                continue;
            }
            tf.hide(tmp);
        }
        //不包含
        if (fragmentStack.search(fragmentTarget) == -1) {
            fragmentStack.push(fragmentTarget);
            tf.add(R.id.fg_container, fragmentTarget, uuid).show(fragmentTarget);
        } else {
            //调整堆栈位置 栈顶元素问显示的fragment
            fragmentStack.remove(fragmentTarget);
            fragmentStack.push(fragmentTarget);
            tf.show(fragmentTarget);
        }
        removeOtherStack(fragmentStack, tf);
        tf.commitNowAllowingStateLoss();
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容