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

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

  • 相关阅读:
    关于ajax无刷新分页 vue
    ajax无刷新分页
    querylist采集 爬虫
    201703-1 分蛋糕 Java
    201612-2 工资计算 Java
    201612-1 中间数 Java
    201609-2 火车购票 Java
    201609-1 最大波动 Java
    201604-2 俄罗斯方块 Java
    201604-1 折点计数 Java
  • 原文地址:https://www.cnblogs.com/manuosex/p/3587577.html
Copyright © 2020-2023  润新知