向后按两次退出片段 [英] Double back press to exit from fragment

查看:98
本文介绍了向后按两次退出片段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

由于问题非常相似,但我没有找到确切的答案.我在下面的链接上尝试了答案,但是它不起作用!

Since question is quite similar but I didn't found an exact answer to it. I tried the answer on the link below but it is not working!!

Android Double Back按此按钮可关闭具有以下功能的应用程序碎片

这是我的代码:

public interface OnBackPressedListener {

void onBackPressed();
}

现在是片段:

public class HomeFragment extends Fragment implements View.OnClickListener, OnBackPressedListener{

 boolean doubleBackToExitPressedOnce = false;
@Override
public void onBackPressed() {
    //Checking for fragment count on backstack
    if (getFragmentManager().getBackStackEntryCount() > 0) {
        getFragmentManager().popBackStack();
    } else if (!doubleBackToExitPressedOnce) {
        this.doubleBackToExitPressedOnce = true;
        Toast.makeText(getActivity(),"Tap again to exit.", Toast.LENGTH_SHORT).show();

        new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                doubleBackToExitPressedOnce = false;
            }
        }, 2000);
    }
    }

尝试使用以及getSupportFragmentManager(),但突出显示为红色.我需要双击片段(Android中的底部导航栏)以退出应用程序.

Tried using getSupportFragmentManager() as well, but it is highlighted red. I need to double tap from the fragment (a bottom navigation bar in android) to exit from application.

推荐答案

尝试此代码,它将始终有效.

Try this code and it always works.

在顶部添加此

 private boolean isFirstBackPressed = false;

现在在 onBackPressed 方法内,添加以下代码.

Now inside onBackPressed method add below code.

添加此内容:

@Override
public void onBackPressed() {
      if (getSupportFragmentManager().getBackStackEntryCount() != 0){
            super.onBackPressed();
      }else{
            if (isFirstBackPressed) {
                  super.onBackPressed();
             } else {
            isFirstBackPressed = true;
            showMessage("Press back again to exit");
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    isFirstBackPressed = false;
                }
            }, 1500);
        }
    }
  }    

这篇关于向后按两次退出片段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆