1、需求:点击下面的导航栏加载对应的fragment,其他的不加载,导航栏切换,如果fragment加载出来就不重新请求
直接调用replaceFragment方法:
public void replaceFragment(int pos) { Fragment tabFragment = getFragment(pos); FragmentManager fragmentManager = getChildFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); if (fragmentManager.getFragments() != null && fragmentManager.getFragments().contains(tabFragment)) { for (Fragment fragment : fragmentHashMap.values()) { fragmentTransaction = fragment.equals(tabFragment) ? fragmentTransaction .show(fragment) : fragmentTransaction.hide(fragment); } fragmentTransaction.commit(); } else { if (fragmentManager.getFragments() != null) { for (Fragment fragment : fragmentManager.getFragments()) { if (!tabFragment.equals(fragment)) { fragmentTransaction.hide(fragment); } } } fragmentTransaction.add(R.id.fl_container, tabFragment) .show(tabFragment).commit(); } }
public Fragment getFragment(int pos) { Fragment fragment = fragmentHashMap.get(pos); if (fragment == null) { switch (pos) { case 0: fragment = InnerSkinFragment.getInstance(detectionId); break; case 1: fragment = InnerMBFragment.getInstance("美白",detectionId); break; case 2: fragment = InnerMBFragment.getInstance("减龄",detectionId); break; } fragmentHashMap.put(pos, fragment); } return fragment; }
2、如果需要切换的时候刷新数据,可以调用fragment的onHiddenChange()方法.