当前位置: 首页 > 知识库问答 >
问题:

Android:按下返回按钮时退出应用程序

柯鸿振
2023-03-14

在我的应用程序中,我想在按下后退按钮时退出应用程序,这是我的代码:

@Override
    public void onBackPressed() {
        new AlertDialog.Builder(this).setIcon(android.R.drawable.ic_dialog_alert).setTitle("Exit")
                .setMessage("Are you sure you want to exit?")
                .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        finish();
                    }
                }).setNegativeButton("No", null).show();
    }

它工作正常,但当我退出应用程序时,它不会完全退出,并显示带有我的应用程序徽标的空白页面,当我再次按下后退按钮退出应用程序,我如何修复它???

编辑:

我使用这个代码而不是上面的代码,但我的应用程序完全退出,但我希望它在后台运行并且不完全退出,我该怎么做?

@Override
    public void onBackPressed() {
        new AlertDialog.Builder(this).setIcon(android.R.drawable.ic_dialog_alert).setTitle("Exit")
                .setMessage("Are you sure?")
                .setPositiveButton("yes", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                        Intent intent = new Intent(Intent.ACTION_MAIN);
                        intent.addCategory(Intent.CATEGORY_HOME);
                        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        startActivity(intent);
                        finish();
                    }
                }).setNegativeButton("no", null).show();
    } 

共有3个答案

邹英发
2023-03-14

我遇到了同样的问题,我有一个LoginActivity和一个MainActivity。如果我单击 MainActivity 中的后退按钮,应用程序必须关闭。所以我用OnBackPressed方法做了。这个移动TaskToBack()的工作方式与Home Button相同。它使后退堆栈保持原样。

public void onBackPressed() {
  //  super.onBackPressed();
    moveTaskToBack(true);

}
颛孙钱青
2023-03-14

试试这个:

Intent intent = new Intent(Intent.ACTION_MAIN);
          intent.addCategory(Intent.CATEGORY_HOME);
          intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//***Change Here***
          startActivity(intent);
          finish();
          System.exit(0);
路欣荣
2023-03-14

当您按下后退键,然后完成当前活动(如A)时,您会看到一个带有应用程序徽标的空白活动(如B),这意味着在完成A后显示的活动B仍处于后退状态,并且活动A是从活动B开始的,因此在活动中,您应该使用以下标志启动活动A:

Intent launchNextActivity;
launchNextActivity = new Intent(B.class, A.class);
launchNextActivity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
launchNextActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);                  
launchNextActivity.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(launchNextActivity);

现在,您的活动A位于堆栈顶部,而应用程序的其他活动则不在堆栈上。

现在,在要实现 onBackPressed 以关闭应用的活动 A 中,您可以执行如下操作:

private Boolean exit = false;
@Override
    public void onBackPressed() {
        if (exit) {
            finish(); // finish activity
        } else {
            Toast.makeText(this, "Press Back again to Exit.",
                    Toast.LENGTH_SHORT).show();
            exit = true;
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    exit = false;
                }
            }, 3 * 1000);

        }

    }

这里的处理程序处理意外的回压,它只是显示一个Toast,如果在3秒内有另一个回压,它会关闭应用程序。

 类似资料:
  • 按下后退按钮,我试图从活动中退出应用程序。但问题是在按下返回键后,刷新相同的活动2到3次,进入登录活动,不退出应用程序。有人可以帮助解决这个问题。 以下是我必须尝试退出应用程序的方式。

  • 我正在开发一个需要

  • 问题内容: 我有一个包含几个用户可编辑项(EditText字段,RatingBar等)的活动。我想提示用户是否按下了后退/主页按钮,并且所做的更改尚未保存。阅读完android文档后,似乎这段代码应该放在onPause方法中。我尝试将AlertDialog放在onPause中,但是显示对话框然后立即将其删除,因为没有任何内容可以阻止暂停完成。 到目前为止,这是我想出的: 我是在正确的轨道上吗,还是

  • 我正在开发Windows Phone8.1 RT应用程序。 场景: 对此有什么解决办法?

  • 09-08 07:58:32.915 137 26-13726/com.ruthadeaton.bld3.calculator e/androidruntime:致命异常:main process:com.ruthadeaton.bld3.calculator.calculator,PID:13726 java.lang.numberformatexception:empty string ats

  • 我对libGDX有一个问题,当我用后退按钮退出后恢复应用程序时,只有一个白色屏幕。 实际应用运行,接受触摸输入,播放声音,但屏幕只是白色。 我读过保持对纹理的静态引用可能会导致这个问题,但我没有这样做。 下面是我的资产代码如何工作的简化版本。 在按下后退按钮后返回应用程序时,重新创建AssetManager,重新打开SplashScreen(为白色),并更新AssetManager直到重新加载所有