Android 保存Fragment状态,避免重复加载

来源:互联网 发布:php虚拟主机 编辑:程序博客网 时间:2024/05/23 14:32
许多应用主界面是有多个Fragment的组成的,很多情况下,要求来回切换Fragment时,保存其状态,就是说来回切换Fragment时,不再重复加载如下图如果用这种方式的话有一个缺点,保存的Fragment界面不会被杀死,会占用内存,下面我们直接上代码:`//声明FragmentFragment f1, f2, f3, f4, f5;// 隐藏Fragmentpublic 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);}// 展示Fragmentpublic void showFragment(int index) {// Fragment事务管理器FragmentTransaction ft = getSupportFragmentManager().beginTransaction();// 隐藏已加载过的FragmenthintFragment(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);致辞  完毕!!!`
0 0
原创粉丝点击