FragmentTransaction show()hide()问题

时间:2018-04-22 17:41:23

标签: android fragment fragmenttransaction

我有一个带有4个菜单项的底部导航栏,我使用FragmentTransaction show() , hide()方法在标签上切换片段点击,隐藏当前片段并显示下一个片段, 在使用show或hide方法之前,我必须首先添加片段然后使用show或hide,直到现在一切正常并且片段显示它的最终状态就是我想要的。 但是,使用FragmentTransaction add()方法的最后添加的片段始终处于活动状态,并且视图仍然可以点击并且切换片段无法点击或触摸。 我不知道为什么会这样......有什么建议吗?!!

这是我的代码

private void changeFragment(Fragment fragment) {
    if (fragment == null || fragment == currentFragment) return;

    FragmentTransaction fragTransaction = getSupportFragmentManager().beginTransaction();
    fragTransaction.setReorderingAllowed(true);
    fragTransaction.setCustomAnimations(
            R.anim.fade_in_transaction,
            R.anim.fade_out_transaction
    );

    if (currentFragment != null && !currentFragment.isHidden()) {
        fragTransaction.hide(currentFragment);
    }
    Fragment savedFragment = getSupportFragmentManager()
            .findFragmentByTag(fragment.getClass().getSimpleName());

    if (savedFragment == null) {
        fragTransaction.add(R.id.container, fragment
                , fragment.getClass().getSimpleName());
        this.currentFragment = fragment;
    } else {
        if (savedFragment.isHidden()) {
            fragTransaction.show(savedFragment);
        }
        this.currentFragment = savedFragment;
    }

    if (getSupportFragmentManager().getPrimaryNavigationFragment() == null) {
        if (fragment instanceof FragmentHome) {
            fragTransaction.setPrimaryNavigationFragment(fragment);
        }
    }
    fragTransaction.commit();
}

0 个答案:

没有答案