一.设置Fragment的tag
/** * 当前的fragment */ private Fragment currentFragment; /*切换fragment的标志*/ public static final String CarListFragment = "carlistfragment"; public static final String CoverphotoListFragment = "coverphotolistfragment"; public static final String RoadtestListFragment = "roadtestlistfragment";
二.Fragment对应的布局
三.布局切换
/**
* @param flag 对应fragment的tag
* @author Longchengbin
* @description 切换fragment
* @since 2020-8-18 15:23
**/
public void ChangeFragment(String flag) {
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
Fragment fragment = getSupportFragmentManager().findFragmentByTag(flag);
boolean isShowOrAdd = true;//true表示show,false表示add
if (fragment == null) {
isShowOrAdd = false;
switch (flag) {
case CarListFragment:
fragment = new CarListFragment();
break;
case CoverphotoListFragment:
fragment = new CoverphotoListFragment();
break;
default:
break;
}
}
if (currentFragment != null) {
currentFragment.onPause();
fragmentTransaction.hide(currentFragment);
}
if (isShowOrAdd) {
fragmentTransaction.show(fragment);
fragment.onResume();
} else {
fragmentTransaction.add(R.id.main_fragment_host, fragment, flag);
}
currentFragment = fragment;
fragmentTransaction.commit();
}
四.请求数据
每次fragment切换回显示状态,主动网络请求,在对应fragment写入以下代码
/**
* @author Longchengbin
* @description Fragment被hide或show调用
* @since 2020-8-18 16:32
**/
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
/*如果没有隐藏请求列表*/
if(!hidden){
refreshLayout();
}
}