fragment的回退总结

第一种:popBackStack(int id, int flags)

第一个参数就是
FragmentTransaction调用commit()返回后的整数,第二个参数传0表示回退到第一个参数包含的状态,传
FragmentManager.POP_BACK_STACK_INCLUSIVE表示第一个参数的状态也回退调。

第二种:popBackStack(String name, int flags)

第一个参数是 FragmentTransaction的 addToBackStack(string)方法中的string。第二个参数跟第一种一样。

第三种popBackStack(),这个没什么可说的,就是回退一次。


代码如下
public void onClick(View v) {
        FragmentTransaction ft = fm.beginTransaction();
        /* popBackStack(int id, int flags)时的情况*/
        if(v == btn1){
            if(fm.getFragments() != null && fm.getFragments().contains(fragment1)){
                Toast.makeText(this,"已add",Toast.LENGTH_SHORT).show();
                return;
            }
            ft.add(R.id.framelayout1,fragment1);
            ft.addToBackStack(null);
            id1 = ft.commit();
        }else if(v == btn2){
            ft.add(R.id.framelayout2,fragment2);
            ft.addToBackStack(null);
            id2 = ft.commit();
        }else if(v == btn3){
            ft.add(R.id.framelayout3,fragment3);
            ft.addToBackStack(null);
            id3 = ft.commit();
        }else{
            //依次点击btn1,btn2,btn3,再点击btn4
            fm.popBackStack(id1,fm.POP_BACK_STACK_INCLUSIVE); //FragmentManager.POP_BACK_STACK_INCLUSIVE表示弹出时包含id1,也就是说第一个参数也会被回退调
//            fm.popBackStack(id1,0);     //参数0表示弹出时不包含id1,也就是第一个参数不会回退
        }


        /* popBackStack(String name, int flags)情况
        if(v == btn1){
            ft.add(R.id.framelayout1,fragment1);
            ft.addToBackStack("kedou1");
            ft.commit();
        }else if(v == btn2){
            ft.add(R.id.framelayout2,fragment2);
            ft.addToBackStack("kedou2");
            ft.commit();
        }else if(v == btn3){
            ft.add(R.id.framelayout3,fragment3);
            ft.addToBackStack("kedou3");
            ft.commit();
        }else{
            //依次点击btn1,btn2,btn3,再点击btn4
//            fm.popBackStack("kedou1",fm.POP_BACK_STACK_INCLUSIVE); //FragmentManager.POP_BACK_STACK_INCLUSIVE表示弹出时包含id1,也就是说第一个参数也会被回退调
            fm.popBackStack("kedou1",0);     //参数0表示弹出时不包含id1,也就是第一个参数不会回退
        }
        */

效果图:
一种是 FragmentManager.POP_BACK_STACK_INCLUSIVE




第二种传0时:




源码:http://yunpan.cn/cd6iQ9a8dLtLr (提取码:b9e5)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值