配合Fragment实现 再点一次退出

This's one so easy again click one's exit , suitable for novices to use.

    long preTime = 0;
    @Override
    public void onBackPressed() {
        
                if (System.currentTimeMillis() - preTime >2000){
                    preTime = System.currentTimeMillis();
                    Toast.makeText(mContext,"再点一次退出",Toast.LENGTH_SHORT).show();
                }else {
//                System.exit(0);
                    super.onBackPressed();
                }
    }
 
下面这种是配合 Fragment  多加了判断:
    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 {
            FragmentUtils.exitBackStack(fragmentManager);
//            fragmentManager.popBackStack();
        }
    }
private boolean isTaskTop(String currentActivityName){
    LogUtils.e(mContext,"currentActivityName:"+currentActivityName);
    ActivityManager am = (ActivityManager) mContext.getSystemService(ACTIVITY_SERVICE);
    List<ActivityManager.RunningTaskInfo> runningTaskInfoList = am.getRunningTasks(1);
    String topActivityName = null;
    if (null != runningTaskInfoList){
        topActivityName = (runningTaskInfoList.get(0).topActivity).getShortClassName();
    }
    LogUtils.e(mContext,"topActivityName:"+topActivityName);
    if (TextUtils.isEmpty(topActivityName))
        return false;
    if (TextUtils.isEmpty(currentActivityName))
        throw new IllegalArgumentException();
    if (topActivityName.contains(currentActivityName)){
        return true;
    }else {
        return false;
    }
}
public static void exitBackStack(FragmentManager fragmentManager){
    Log.e("MainActivity","fragment出栈:"+preMainFragment.getClass().getSimpleName());
    fragmentManager.popBackStack();
    listFragment.remove(listFragment.size()-1);
    preMainFragment = listFragment.get(listFragment.size()-1);

}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值