如何在android中以编程方式按下后退按钮?

如何在android中以编程方式按下后退按钮?,android,android-activity,activity-finish,Android,Android Activity,Activity Finish,在我的应用程序中,我有一个注销功能。如果用户单击注销,它将进入主屏幕。现在,我按下后退按钮退出我的应用程序。但我想要的是,我需要自动退出(即以编程方式退出),就像返回按钮功能一样。我知道,通过调用finish()可以实现该功能。但问题是它会转到上一个活动。在活动中重写它后调用onBackPressed。onBackPressed()受支持,因为:API级别5 @Override public boolean onKeyDown(int keyCode, KeyEvent event) {

在我的应用程序中,我有一个注销功能。如果用户单击注销,它将进入主屏幕。现在,我按下后退按钮退出我的应用程序。但我想要的是,我需要自动退出(即以编程方式退出),就像返回按钮功能一样。我知道,通过调用finish()可以实现该功能。但问题是它会转到上一个活动。

在活动中重写它后调用
onBackPressed

onBackPressed()
受支持,因为:API级别5

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK)) {
        onBackPressed();
    }
}

@Override
public void onBackPressed() {
    //this is only needed if you have specific things
    //that you want to do when the user presses the back button.
    /* your specific things...*/
    super.onBackPressed();   
}

您不需要覆盖
onBackPressed()
——它已经定义为当用户按下后退按钮时,默认情况下您的活动将执行的操作。因此,只要调用
onBackPressed()

这只会导致调用
finish()

我想你对后退按钮的作用感到困惑。默认情况下,它只是对
finish()
的调用,因此它只是退出当前活动。如果您在该活动背后有什么东西,该屏幕将显示


您可以做的是,当从登录启动活动时,添加一个清除的顶部标志,以便退出时登录活动不会出现。

有时覆盖onBackPressed()方法很有用因为在处理片段时,如果按下backbutton,您将在片段之间进行更改,它们将返回到上一个片段。

您只需使用onBackPressed()


或者,如果您使用的是fragment,则可以使用getActivity().onBackPressed()

只需添加finish();在第一个类中“(登录活动)onPause();方法。仅此而已

即使按“后退”按钮,也会显示上一个活动…只需使用finish()@Tarun我正在使用此代码清除所有历史存在性。this.finish();Intent intent1=新的Intent(exitctivity.this,PinActivity.class);intent1.setFlags(Intent.FLAG\u ACTIVITY\u CLEAR\u TOP);星触觉(intent1)@用户1216003您走对了路。您将执行与“后退”按钮相同的操作,并在意向中设置标志。感谢您的评论。。按下后退按钮时,我可以插入代码。。我想要的是我想自动呼叫后退按钮。。。我能做一件事吗。。。无论您想在哪里调用,无论何时调用,只要调用此函数即可。您可以根据标志或任何您想要的事件在onCreate内部调用它。这有什么意义?您正在编写android默认的功能。当按下后退按钮时,它调用onBackPressed()。。。。我说的对吗?@KKD如果你必须支持低于5的API,那么你必须像上面那样使用。。那就按一下好了。。。在Backpressed()内启动您的退出谢谢您的评论我没有使用back按钮。。我正在使用注销按钮。。当用户单击它时,填充询问是或否的对话框。。如果是,它会进入主屏幕,在那里我必须自动退出,但我卡在那里。。。这是必需的,因为我正在我的应用程序中使用报警功能。。当警报弹出消息时,主屏幕将显示该消息的背景。。所以我需要删除它,这就是我正在尝试的…我在一些平板电脑上遇到了onBackPressed()的问题,就像在crash中一样。嗨,谢谢你的回答。。听起来不错,但我再次尝试了你的方法,结果还是在同一个登录屏幕上。。你能帮我解决这个问题吗…这是正确的答案,但你应该编辑它,因为它并不总是“只是一个对finish()的调用”。在我的例子中(它完全按照我的意图工作),它是一种在片段堆栈中向后移动的方法,并且在到达堆栈上的第一项之前不会调用finish()。这是完全正确的,值得更多的投票。