У меня есть один элемент стека, я хочу выйти из приложения двойным нажатием назад - PullRequest
0 голосов
/ 25 сентября 2019

Если у меня есть один элемент стека, я хочу выйти из приложения, дважды щелкнув по нему, как я узнаю, когда у меня будет один элемент в стеке?Мой код в методе переопределения onBackPressed

if (getFragmentManager (). GetBackStackEntryCount () == 0) {

        super.onBackPressed();
    }
    else if(getFragmentManager().getBackStackEntryCount()==1){
        moveTaskToBack(false);
    }
    else {
        getFragmentManager().popBackStack();
    }

1 Ответ

0 голосов
/ 26 сентября 2019

Вот мое решение, вы можете следовать тому, что я комментирую в коде.

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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...