Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 后退按钮和最后一个活动_Android - Fatal编程技术网

Android 后退按钮和最后一个活动

Android 后退按钮和最后一个活动,android,Android,我的应用程序链接了一些活动 如果您按下“后退”按钮,您将返回旧的活动,然后突然退出应用程序 所以,如果这是堆栈上的最后一个活动,我需要显示一条类似“您真的想退出吗”的消息 我知道如何覆盖后退按钮,但我不知道如何知道历史上有多少活动 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeat

我的应用程序链接了一些活动

如果您按下“后退”按钮,您将返回旧的活动,然后突然退出应用程序

所以,如果这是堆栈上的最后一个活动,我需要显示一条类似“您真的想退出吗”的消息

我知道如何覆盖后退按钮,但我不知道如何知道历史上有多少活动

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        // Is it the last activity on stack ? 
        // so show confirm dialog
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

请提供帮助。

您可以使用finish()函数实现这一点


您不必知道历史记录中有多少个活动。您可以这样做。单击“后退”按钮时调用onBackPressed()方法。然后在主活动中重写finish()方法以显示确认对话框。因为onBackPressed()方法调用活动的finish()方法。当返回主活动时,重写finish()方法方法时,将显示您已覆盖的对话框。

您的应用程序是否没有主根级别的活动,您可以在其中假设这是真的?作为旁注,当我尝试使用“上一步”按钮退出时,我会卸载任何让我感到不适的应用程序。这是一个手机应用程序,不是一个大的桌面应用程序。我同意你的看法。他们说,劫持后退按钮不是一个好主意。同样地:
public void finish() {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage("do you really want to exit?");
        builder.setCancelable(false);
        builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                quit();
            }
        });
        builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                dialog.cancel();
            }
        });
        AlertDialog alert = builder.create();
        alert.show();
    }

    public void quit() {
        super.finish();
    };