由易信界面——谈谈fragment 状态的保存

简介:

看看我要实现的效果:

其实,这种左右界面切换保存布局方式,不只是易信界面这么用罢了。这更是大多数app布局的主流,而在android平台上面,随着谷歌大力推荐fragment的使用,用fragment实现这样的效果自然是一种大势所趋的事情。

其实fragment实现这样的布局方式本身是一件easy的事情了,我这里要讨论一件事情,如何保存每个fragment状态。这也是fragment使用的一个难题。  我google了一下,百度了一下,终于在csdn上找到了一种解决方式,通过相应显示隐藏方式来保存:


 1             int tabIndex=0,tag=0;
 2             fragment[] fragments=new fragment[]{A.class,B.class,C.class,D.class};
 3             Fragment newFragment = fragments[tag];
 4             FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
 5             if (!getSupportFragmentManager().getFragments().contains(fragments[tag])) {
 6                 transaction.add(R.id.main_content, newFragment);
 7             }
 8 
 9             transaction.addToBackStack(null);
10             
11             transaction.hide(fragments[tabIndex]);
12             transaction.show(newFragment);
13 
14 
15 
16             transaction.commit();
17             tabIndex = tag;

可是鄙人的电脑上support-v4的包并不支持getFragments这个方法,没办法自己重新写一个list来保存,并且判断一下list中是否保存此fragment。list中另外的fragment对象进行了隐藏,相应的方法如下:


private void hideFragment(FragmentTransaction fragmentTransaction,Fragment[] fragments2,Fragment fragment) {
        // TODO Auto-generated method stub
            final   Class class1= fragment.getClass();
        for (int i = 0; i < fragments2.length; i++) {
            if (!fragments2[i].getClass().equals(class1)) {
                        fragmentTransaction.hide(fragments2[i]); 
            }
        }
        
    }

有了这个方法之后,相应的状态就保存起来了。


目录
相关文章
|
10天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1210 5
|
9天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1172 87
|
9天前
|
云栖大会
阿里云云栖大会2025年9月24日开启,免费申请大会门票,速度领取~
2025云栖大会将于9月24-26日举行,官网免费预约畅享票,审核后短信通知,持证件入场
1767 12
|
19天前
|
人工智能 运维 安全
|
2天前
|
资源调度
除了nrm-pm,还有哪些工具可以管理多个包管理器的源?
除了nrm-pm,还有哪些工具可以管理多个包管理器的源?
230 127
|
10天前
|
弹性计算 Kubernetes jenkins
如何在 ECS/EKS 集群中有效使用 Jenkins
本文探讨了如何将 Jenkins 与 AWS ECS 和 EKS 集群集成,以构建高效、灵活且具备自动扩缩容能力的 CI/CD 流水线,提升软件交付效率并优化资源成本。
362 0

热门文章

最新文章