对于activity与fragment回退栈的管理

在做项目时,UI界面采用activity管理fragment,其中涉及到fragment的回退栈管理 以及再按一次退出,一般在activity中


onBackPressed方法进行操作


 @Override
    public void onBackPressed() {
        FragmentManager.BackStackEntry entryAt = fragmentManager.getBackStackEntryAt(fragmentManager.getBackStackEntryCount() - 1);
        //得到每一个位于栈顶的类的名字,然后执行Finish方法进行弹栈
        String name = entryAt.getName();
        if ("HomeFragment".equals(name) ||
                "LiveChinaFragment".equals(name) ||
                "PandaCultureFragment".equals(name) ||
                "PandaBroadcastFragment".equals(name) ||
                "PandaLiveFragment".equals(name)
                ) {
            if(System.currentTimeMillis()-lastTime<2000) {
                System.exit(0);

            }else {
                Toast.makeText(MainActivity.this, "再按一次退出应用", Toast.LENGTH_SHORT).show();
                lastTime=System.currentTimeMillis();
            }

        } else {
            if (fragmentManager.getBackStackEntryCount() > 1) {
                fragmentManager.popBackStackImmediate();//执行弹栈,立马执行
                //否则记录得到位于栈顶的类名字
                String simpleName = fragmentManager.getBackStackEntryAt(fragmentManager.getBackStackEntryCount() - 1).getName();
                //记录做标记,标记为上一个Fragment,点击back键刷新lastFragment
                App.lastFragment = (BaseFragment) fragmentManager.findFragmentByTag(simpleName);
            }
        }
    }

    //执行完全退出
    @Override
    protected void onDestroy() {
        super.onDestroy();
        Process.killProcess(Process.myPid());//获取pid
        System.exit(0);    
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值