Fragment返回栈与Activity任务栈的结合使用

来源:互联网 发布:张小泉 十八子作 知乎 编辑:程序博客网 时间:2024/05/21 09:57

实现目标:  1个Activity 其余都是Fragment

 关于 返回键对Fragment返回栈和Activity任务栈的控制:

    long preTime = 0;    @Override    public void onBackPressed() {        if (fragmentManager.getBackStackEntryCount() == 0){            if (isTaskTop(MainActivity.class.getSimpleName())){                LogUtils.e(mContext,"位于栈顶");                if (System.currentTimeMillis() - preTime >2000){                    preTime = System.currentTimeMillis();                    Toast.makeText(mContext,"再点一次退出",Toast.LENGTH_SHORT).show();                }else {//                System.exit(0);                    super.onBackPressed();                }            }else {                LogUtils.e(mContext,"没有位于栈顶");                super.onBackPressed();            }        }else {            LogUtils.e(mContext,"fragment出栈");            fragmentManager.popBackStack();        }    }

解析:经过验证   Fragment的返回栈  和  Activity的任务栈   不能混为一谈   Activity任务栈中只有 Activity


/** * Return the number of entries currently in the back stack. */public abstract int getBackStackEntryCount();
Fragment的返回栈中 进入总数 不等于0 时  Fragment 出回退栈   
等于0时  操作 Activity 出栈



0 0