【问题标题】:I have one stack item, I want to exit the application by double clicking back pressed我有一个堆栈项,我想通过双击返回来退出应用程序
【发布时间】:2019-09-26 15:18:19
【问题描述】:

如果我有一个堆栈项,我想通过双击返回退出应用程序,我怎么知道我什么时候会有一个堆栈项? 我在覆盖方法 onBackPressed 中的代码

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

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

【问题讨论】:

    标签: android android-studio android-fragments


    【解决方案1】:

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

    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();
        }
    }
    

    【讨论】:

    • 这正是我的意思,tkanks!
    猜你喜欢
    • 1970-01-01
    • 2015-06-27
    • 2023-04-03
    • 2012-05-12
    • 2023-03-26
    • 2012-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多