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()方法.
本文介绍了一种在Android应用中高效切换Fragment的方法,通过判断Fragment是否已加载来避免重复请求,同时提供了在切换时刷新数据的解决方案。利用getChildFragmentManager()和FragmentTransaction,实现了Fragment的显示与隐藏,而无需重新加载。

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



