安卓中用show()和hide()方法来代替转跳fragment的replace()方法

   用show()和hide()方法来代替转跳fragment的replace()方法,来“保存”上一个fragment的位置
开始学习fragment的时候基本上都是使用如下代码来实现

public  void changerButton(Fragment fragment,String s){

     FragmentManager aa=getSupportFragmentManager();
       FragmentTransaction bb= aa.beginTransaction();
       bb.replace(R.id.fragment,fragment,s);
       bb.commit();
  }

   初学的时候基本上都是使用到了replace方法,但是在目前已经很成熟的开发中,却很少使用replace方法(),为什么呢,因为比如说你在某个新闻客户端,看新闻的时候,一不小心手滑点到了旁边的视频按钮。因为刚才的新闻很有趣,然后你有点回新闻按钮,但是这时候如果你是使用的是replace()方法的话,你在从视频的fragment界面转跳会新闻的fragment界面的时候,并不会回到你上次阅读的地方。那这样就很操蛋啊,刚才那条新闻好不容易找到的,在会去找么??!!。这个就是使用replace()方法的缺点。

   这时候咱们来使用另一种转跳fragment界面的方法,说是转跳不如说是显示更加贴切一点。代码如下

public void changedfragment(int j) {
        FragmentTransaction beginTransaction = getSupportFragmentManager().beginTransaction();
        for (int i = 0; i < fragment.size(); i++) {
            Fragment f = this.fragment.get(i);
            if (j == i) {
                if (f.isAdded()) {
                    beginTransaction.show(f);
                } else {
                    beginTransaction.add(R.id.fy, f);
                }
            } else {
                if (f.isAdded()) {
                    beginTransaction.hide(f);
                }
            }
        }
        beginTransaction.commit();
    }

   首先来解释一下这个代码。也是和replace()方法的步骤一样,首先先是获得fragment的管理器。然后在循环里面的第一个fragment参数实际上是一个集合,就是往里面添加自己想要添加的fragment界面的。然后进入第一个判断,就是判断当前的fragment界面是不是和遍历的fragment界面是同一个界面。第二个判断是为空判断,判断这个fragment是不是已经被添加了的。如果是被添加了就展示这个fragment就行,如果没有被添加,就把这个添加到事务里面。当当前被选中的界面和遍历的界面不是同一个界面的时候,用事务把这个fragment界面给隐藏起来。

   通过上面的方法就能实现,当你看新闻的时候不小心其他按钮的时候,再次返回新闻还是刚刚你阅读的那个界面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值