我有一个带有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();
}