4

注销后,用户将被定向到 android 中的登录屏幕。现在,如果用户点击手机的后退按钮,它应该留在登录屏幕本身。

我怎样才能在android中实现它?
我在我的应用程序中使用了以下代码,但它会关闭我的应用程序。它应该只停留在登录屏幕上

Intent objsignOut = new Intent(getBaseContext(),Hello.class);
objsignOut.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(objsignOut);

请指导我正确的方法。

4

5 回答 5

8

在您的登录活动中覆盖onBackPressed,什么也不做..

public void onBackPressed() {
    //do nothing
}
于 2012-11-30T07:41:15.900 回答
4

在我看来,有比覆盖 onBackPressed 方法更简单、更清洁的解决方案,如此此处所述。

您可以在启动新活动(登录或注销)时提供标志以简单地清除“后退堆栈”而不是覆盖后退按钮的行为:

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);

这是一种更安全的解决方案,也可以在您登录后使用,而不仅仅是在您注销后使用。

于 2018-12-30T13:37:48.153 回答
1
public void onBackPressed(){
    if(appCanClose){
        finish();
    }
}

这些函数既可以存在于系统框架中(如果不在您的代码中使用),也可以存在于您的代码中。如果您将其留空,则按下后退按钮时应用程序将不执行任何操作。

在本例中,当布尔值 appCanClse 为 true 时,返回按钮将退出应用程序,如果为 false,则返回按钮将不执行任何操作。我会确保用户仍然有办法退出应用程序。:p

于 2012-11-30T07:47:01.680 回答
1

您只需添加这两行代码即可

@Override
public void onBackPressed(){
    
    moveTaskToBack(true);

}

当任何人点击返回按钮时,它将阻止返回到以前的活动以及将应用程序带到后台

于 2020-11-27T20:44:43.803 回答
0

实际的解决方案是

@Override
    public void onBackPressed() {
        super.onBackPressed();
        finishAffinity();
    }

在登录活动中添加此代码。在登录页面中单击后退按钮时应用程序关闭。

于 2021-10-26T14:45:42.860 回答