许多应用主界面是有多个Fragment的组成的,很多情况下,要求来回切换Fragment时,保存其状态,就是说来回切换Fragment时,不再重复加载如下图 如果用这种方式的话有一个缺点,保存的Fragment界面不会被杀死,会占用内存,下面我们直接上代码: `//声明Fragment Fragment f1, f2, f3, f4, f5; // 隐藏Fragment public void hintFragment(FragmentTransaction ft) { if (f1 != null) { ft.hide(f1); } if (f2 != null) { ft.hide(f2); } if (f3 != null) { ft.hide(f3); } if (f4 != null) { ft.hide(f4); } if (f5 != null) { ft.hide(f5); } // 展示Fragment public void showFragment(int index) { // Fragment事务管理器 FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); // 隐藏已加载过的Fragment hintFragment(ft); switch (index) { // 判断Fragment是否实例化,实例化过直接显示出来,否者实例化 case 1: if (f1 != null) { ft.show(f1); } else { f1 = new Fragment01(); ft.add(R.id.content, f1); } break; case 2: if (f2 != null) { ft.show(f2); } else { f2 = new Fragment02(); ft.add(R.id.content, f2); } break; case 3: if (f3 != null) { ft.show(f3); } else { f3 = new Fragment03(); ft.add(R.id.content, f3); } break; case 4: if (f4 != null) { ft.show(f4); } else { f4 = new Fragment04(); ft.add(R.id.content, f4); } break; case 5: if (f5 != null) { ft.show(f5); } else { f5 = new Fragment05(); ft.add(R.id.content, f5); } break; } ft.commit(); } 最后通过调用如下方法展示不同的Fragment,之前切换不再重复加载 showFragment(1); showFragment(2); showFragment(3); showFragment(4); showFragment(5); 致辞 完毕!!! `
Android 保存Fragment状态,避免重复加载
最新推荐文章于 2022-01-06 17:54:02 发布