Activity-Fragment存储与返回

本文介绍了一种基于Android平台的Fragment管理与缓存机制,通过定义一系列常量标识不同的Fragment,并利用HashMap缓存Fragment实例,实现快速切换及内存有效管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package TokenLeiBao;

import java.lang.ref.SoftReference;
import java.util.HashMap;

import android.support.v4.app.Fragment;

import FragmentLeiBao.CaoMaFragment;
import FragmentLeiBao.ChakanFragment;
import FragmentLeiBao.DiaochaFragment;
import FragmentLeiBao.ViewDiaochaFragment;
import FragmentLeiBao.ViewGerensFragment;
import FragmentLeiBao.ViewGopgeFragment;
import FragmentLeiBao.ViewPhotoFragment;
import FragmentLeiBao.ViewXiugaiFragment;
import FragmentLeiBao.ViewYonghuFragment;
import FragmentLeiBao.ViewChouquFragment;
import FragmentLeiBao.ViewxianchaFragment;
import FragmentLeiBao.ViewxuanFragment;

public class ViewIndex {

   public static final int TEST1_VIEW= 0;
   public static final int VIEW_LOGIN = 1;
   public static final int VIEW_SURVEY_LIST = 2;
   public static final int VIEW_USER_CENTER = 3;
   public static final int VIEW_SURVEY_DETAIL = 4;
   public static final int VIEW_SURVEY_Nu = 5;
   public static final int View_SID_Niu=6;
   public static final int View_Chou_Qi=7;
   public static final int View_Cha_kan=8;
   public static final int View_Xuan_Ze=9;
   public static final int View_Xuan_cha=11;
   public static final int VIEW_USER_CENTE = 12;
   public static final int VIEW_Sao_Ma = 13;
// /**
   public static final int SWITCHINDEX_0 = 0;
   public static final int SWITCHINDEX_1 = 1;

   public static HashMap<String, SoftReference<Fragment>> viewMap = new HashMap<String, SoftReference<Fragment>>();
   public static Fragment getView(int index){
      Fragment contentViewTemp = null;
      SoftReference<Fragment> ref = viewMap.get(""+index);
      if(ref!=null){
         if(ref.get()!=null){
            contentViewTemp = ref.get();
            if(contentViewTemp!=null){
               if(contentViewTemp.getActivity()!=null&&
                     contentViewTemp.getActivity().isFinishing()){
                  viewMap.remove(ref);
                  contentViewTemp = null;
               }
            }
         }
      }

//每新建一个Fragment须在此注册


 Fragment contentView = null; int switchIndex = index/10;/*0至第10个Fragment*/ try { switch(switchIndex){ case SWITCHINDEX_0: switch(index){ case VIEW_LOGIN: contentView = contentViewTemp==null?new ViewGopgeFragment():contentViewTemp;
 break; case VIEW_SURVEY_LIST: contentView = contentViewTemp==null?new DiaochaFragment():contentViewTemp; break; case VIEW_USER_CENTER: contentView = contentViewTemp==null?new ViewGerensFragment():contentViewTemp; break; case VIEW_SURVEY_DETAIL: contentView = contentViewTemp==null?new ViewXiugaiFragment():contentViewTemp; break; case VIEW_SURVEY_Nu: contentView = contentViewTemp==null?new ViewYonghuFragment():contentViewTemp; break; case View_SID_Niu: contentView = contentViewTemp==null?new ViewDiaochaFragment():contentViewTemp; break; case View_Chou_Qi: contentView = contentViewTemp==null?new ViewChouquFragment():contentViewTemp; break; case View_Cha_kan: contentView = contentViewTemp==null?new ChakanFragment():contentViewTemp; break; case View_Xuan_Ze: contentView = contentViewTemp==null?new ViewxuanFragment():contentViewTemp; break; } break; case SWITCHINDEX_1:/*11至第20个Fragment*/ switch (index){ case View_Xuan_cha: contentView = contentViewTemp==null?new ViewxianchaFragment():contentViewTemp; break; case VIEW_USER_CENTE: contentView = contentViewTemp==null?new ViewPhotoFragment():contentViewTemp; break; case VIEW_Sao_Ma: contentView = contentViewTemp==null?new CaoMaFragment():contentViewTemp; break; } break; } if(contentViewTemp==null){ SoftReference<Fragment> ref0 = new SoftReference<Fragment>(contentView); viewMap.put(""+index, ref0); } } catch (Exception e) { e.printStackTrace(); } catch(OutOfMemoryError e){ e.printStackTrace(); viewMap.clear(); System.gc(); System.gc(); System.gc(); } return contentView; }}

Activity类:

/*切换线性布局显示不同Fragment*/
        changeFragment(ViewIndex.VIEW_LOGIN, null);
fragment类:

View view = inflater.inflate(R.layout.shopping_main,container,false);
return view;

如果过要做保存:

搜索:Android-Fragment-界面保存


使用前先进入ViewIndex类,添加fragment类


后退:    Operation pre = ((MainActivity)getActivity()).accessedViews.pop();//从栈空间里面将上一条数据抛出来
                ((MainActivity)getActivity()).changeFragment(pre.getCode(), pre.getBundle(), false);
                
                
                
页面切换:  ((MainActivity) getActivity()).changeFragment(ViewIndex.View_Cha_kan, null);
               
               注:ViewIndex.VIEW_SURVEY_LIST为你想要跳转的页面,ViewIndex类可以添加Fragment

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值