由易信界面——谈谈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]); 
            }
        }
        
    }

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


目录
相关文章
|
6月前
|
Python
PyQt5-基本控件| 主窗口的类型、创建以及代码如何实现?
PyQt5-基本控件| 主窗口的类型、创建以及代码如何实现?
37 1
|
8月前
|
小程序 JavaScript
整理微信小程序控制view隐藏显示的五种方法
整理微信小程序控制view隐藏显示的五种方法
619 0
|
8月前
|
Android开发
Android JetPack组件之ViewModel状态的保存(程序在后台被系统杀死数据也存活)
Android JetPack组件之ViewModel状态的保存(程序在后台被系统杀死数据也存活)
99 0
|
11月前
|
Android开发 Kotlin
读源码长知识 | 原来可以这样扩大 View 点击区域
读源码长知识 | 原来可以这样扩大 View 点击区域
67 0
|
存储
刷新adapte要注意的地方,和adapter使用的流程
刷新adapte要注意的地方,和adapter使用的流程
|
iOS开发
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
127 0
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
|
存储 缓存 算法
读源码长知识 | 更好的 RecyclerView 表项点击监听器
RecyclerView没有提供表项点击事件监听器,只能自己处理。这一篇介绍一种更加解耦,更易于使用的表项点击事件监听方法。
172 0
SwiftUI—如何实现对视图显示和消失事件的监听
SwiftUI—如何实现对视图显示和消失事件的监听
589 0
SwiftUI—如何实现对视图显示和消失事件的监听
|
前端开发 开发工具 Android开发
iOS监听物理截图自动生成截图并跳转到反馈页面进行显示(截图内容包括系统的弹框视图UIAlertView/Controller)
iOS监听物理截图自动生成截图并跳转到反馈页面进行显示(截图内容包括系统的弹框视图UIAlertView/Controller)
309 0
iOS监听物理截图自动生成截图并跳转到反馈页面进行显示(截图内容包括系统的弹框视图UIAlertView/Controller)
|
前端开发 容器
用MVVM模式开发中遇到的零散问题总结(5)——将动态加载的可视元素保存为图片的控件,Binding刷新的时机
原文:用MVVM模式开发中遇到的零散问题总结(5)——将动态加载的可视元素保存为图片的控件,Binding刷新的时机       在项目开发中经常会遇到这样一种情况,就是需要将用户填写的信息排版到一张表单中,供打印或存档。
793 0