Android 我有一个堆栈项,我想通过双击back按钮退出应用程序

Android 我有一个堆栈项,我想通过双击back按钮退出应用程序,android,android-studio,android-fragments,Android,Android Studio,Android Fragments,如果我有一个堆栈项,我想通过双击back按钮退出应用程序,我如何知道何时堆栈上会有一个项? 重写方法onBackPressed中的我的代码 如果(getFragmentManager().GetBackBackbackEntryCount()==0){ 这是我的解决方案,您可以按照我在代码中的注释进行操作 private static final long DURATION_BETWEEN_BACK_PRESS = 1000; private final Handler handler = ne

如果我有一个堆栈项,我想通过双击back按钮退出应用程序,我如何知道何时堆栈上会有一个项? 重写方法onBackPressed中的我的代码

如果(getFragmentManager().GetBackBackbackEntryCount()==0){


这是我的解决方案,您可以按照我在代码中的注释进行操作

private static final long DURATION_BETWEEN_BACK_PRESS = 1000;
private final Handler handler = new Handler();
private boolean isBackButtonPressed = false;
private final Runnable resetIsBackButtonPressed = new Runnable() {
    @Override
    public void run() {
        isBackButtonPressed = false;
    }
};

@Override
public void onBackPressed() {
    FragmentManager fragmentManager = getFragmentManager();
    int backStackEntryCount = fragmentManager.getBackStackEntryCount();

    if (backStackEntryCount == 0) {
        // There is no item in back stack. This happens when you do not add any fragment to activity.
        super.onBackPressed();
        return;
    }

    if (backStackEntryCount > 1) {
        // The back stack has more than one item, just pop top item from the stack.
        fragmentManager.popBackStackImmediate();
        return;
    }

    // The back stack has only one item left.
    if (!isBackButtonPressed) {
        // The first time back button pressed.
        isBackButtonPressed = true;

        // If users do not press back key second time in a given duration, then just reset back pressed status.
        handler.postDelayed(resetIsBackButtonPressed, DURATION_BETWEEN_BACK_PRESS);
    } else {
        // The second time back button pressed.
        handler.removeCallbacks(resetIsBackButtonPressed);
        finish();
    }
}

这正是我的意思,特坎克斯!
private static final long DURATION_BETWEEN_BACK_PRESS = 1000;
private final Handler handler = new Handler();
private boolean isBackButtonPressed = false;
private final Runnable resetIsBackButtonPressed = new Runnable() {
    @Override
    public void run() {
        isBackButtonPressed = false;
    }
};

@Override
public void onBackPressed() {
    FragmentManager fragmentManager = getFragmentManager();
    int backStackEntryCount = fragmentManager.getBackStackEntryCount();

    if (backStackEntryCount == 0) {
        // There is no item in back stack. This happens when you do not add any fragment to activity.
        super.onBackPressed();
        return;
    }

    if (backStackEntryCount > 1) {
        // The back stack has more than one item, just pop top item from the stack.
        fragmentManager.popBackStackImmediate();
        return;
    }

    // The back stack has only one item left.
    if (!isBackButtonPressed) {
        // The first time back button pressed.
        isBackButtonPressed = true;

        // If users do not press back key second time in a given duration, then just reset back pressed status.
        handler.postDelayed(resetIsBackButtonPressed, DURATION_BETWEEN_BACK_PRESS);
    } else {
        // The second time back button pressed.
        handler.removeCallbacks(resetIsBackButtonPressed);
        finish();
    }
}