Onbackpressed关闭应用程序登录后不关闭应用程序

时间:2016-07-24 12:15:07

标签: android android-fragments onbackpressed

我的应用程序包含2个主要活动和1个辅助活动(登录弹出窗口)

  1. 活动是PreLogin活动,其中用户有应用程序信息和其他一些东西和登录按钮。当他按下该按钮时,新活动将作为弹出窗口启动。如果他点击那里,该活动将被关闭,用户将返回上一个活动。

  2. 活动是PostLogin,我实现了这个功能:

  3. 我的代码:

    public void onBackPressed() {
        if (doubleBackToExitPressedOnce) {
            super.onBackPressed();
            finish();
            return;
        }
    
        this.doubleBackToExitPressedOnce = true;
        final View coordinatorLayoutView = findViewById(R.id.coordinator);
    
        Snackbar.make(coordinatorLayoutView, "Press again to exit.", Snackbar.LENGTH_LONG).show();
        new Handler().postDelayed(new Runnable() {
    
    
            @Override
            public void run() {
                doubleBackToExitPressedOnce=false;
    
            }
        }, 5000);
    }
    

    此代码应关闭我的应用程序,但问题是按下按钮2次,灰色屏幕显示,用户需要再次单击后退按钮退出应用程序。

    我很确定问题在某种程度上与我的Prelogin活动有关,因为当我在我的Prelogin活动noHistory上尝试onBackpressed()时,我的工作就像魅力一样,但我无法使用这种方法因为我需要我的Prelogin上的历史记录,因此返回按钮适用于Login Popup。

3 个答案:

答案 0 :(得分:1)

您可以使用下面的简单代码来实现这一目标。

@Override
    public void onBackPressed() {
        if (back_pressed + 2000 > System.currentTimeMillis()) {
            //Intent intent = new Intent(Intent.ACTION_MAIN);
            //intent.addCategory(Intent.CATEGORY_HOME);
            //intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            //startActivity(intent);
            super.onBackPressed();
        } else {
            Toast.makeText(this, "Press the back button once again to close the application.", Toast.LENGTH_SHORT).show();
            back_pressed = System.currentTimeMillis();
        }
    }

此处20002 Seconds,您可以将其更改为您喜欢的任何值。如果再次在2 seconds内按下后退按钮,则只会返回。

如果需要,您可以拨打上一个活动的Intent,也可以删除已注释的Intent代码以返回Home屏幕。

答案 1 :(得分:0)

简单地说完成();在startActivity(intent)之后;在第一个活动!

答案 2 :(得分:0)

在启动意图后,在第一个活动(登录活动)中调用finish()方法。