方式一:
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
Fragment currentFragment = fragmentManager.findFragmentByTag(fragmentTag);
FragmentTransaction tr = fragmentManager.beginTransaction();
tr.hide(currentFragment);
switch (checkedId) {
case R.id.rb_home:
fragment = fragmentManager.findFragmentByTag(ChildHomeFragment.TAG);
fragmentTag = ChildHomeFragment.TAG;
if (fragment == null) {
fragment = new ChildHomeFragment();
}
break;
case R.id.rb_msg:
fragment = fragmentManager.findFragmentByTag(MessageFragment.TAG);
fragmentTag = MessageFragment.TAG;
if (fragment == null) {
fragment = new MessageFragment();
}
break;
case R.id.rb_service:
fragment = fragmentManager.findFragmentByTag(CustomerServiceFragment.TAG);
fragmentTag = CustomerServiceFragment.TAG;
if (fragment == null) {
fragment = new CustomerServiceFragment();
}
break;
case R.id.rb_mine:
fragment = fragmentManager.findFragmentByTag(MineFragment.TAG);
fragmentTag = MineFragment.TAG;
if (fragment == null) {
fragment = new MineFragment();
}
break;
}
if (fragment != null && fragment.isAdded()) {
tr.show(fragment);
} else {
tr.add(R.id.content, fragment, fragmentTag);
}
Constant.SWITCH_FLAG = false;
tr.addToBackStack(null);
tr.commitAllowingStateLoss();
}
//初始化
private void initFragmentManager() {
fragmentTag = ChildHomeFragment.TAG;
fragmentManager = getSupportFragmentManager();
ft = fragmentManager.beginTransaction();
fragment = fragmentManager.findFragmentByTag(ChildHomeFragment.TAG);
fragment = new ChildHomeFragment();
ft.add(R.id.content, fragment, fragmentTag);
ft.addToBackStack(null);
ft.commitAllowingStateLoss();
}
@Override
public void onAttachFragment(Fragment fragment) {
super.onAttachFragment(fragment);
Constant.SWITCH_FLAG = false;
if (homeFragment == null && fragment instanceof ChildHomeFragment) {
homeFragment = (ChildHomeFragment) fragment;
} else if (msgFragment == null && fragment instanceof MessageFragment) {
msgFragment = (MessageFragment) fragment;
} else if (csFragment == null && fragment instanceof CustomerServiceFragment) {
csFragment = (CustomerServiceFragment) fragment;
} else if (userFragment == null && fragment instanceof MineFragment) {
userFragment = (MineFragment) fragment;
}
}
方式二:

做个记录
本文详细介绍了在Android应用中使用Fragment进行界面切换的两种方法。一种是通过RadioGroup的选中状态改变来动态显示或隐藏Fragment,另一种是记录当前显示的Fragment以便于后续操作。此策略有助于提高应用程序的响应速度和用户体验。
2791

被折叠的 条评论
为什么被折叠?



