Android 通过覆盖设备后退按钮避免显示以前的活动

Android 通过覆盖设备后退按钮避免显示以前的活动,android,activity-stack,Android,Activity Stack,我有一个具有注销选项的活动。单击此处,我将调用登录活动。因此,当我在“活动”中登录时单击“设备返回”按钮时,它会将我带回到“活动”\u A,在那里我有“注销”选项。我想要的是,当我在登录活动中单击设备返回按钮时,它必须将我带到设备主屏幕。类似于“关闭应用程序”或“清除活动堆栈” 我试过这个: Intent intent = new Intent(Activity_A.this, LoginActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_

我有一个具有注销选项的活动。单击此处,我将调用登录活动。因此,当我在“活动”中登录时单击“设备返回”按钮时,它会将我带回到“活动”\u A,在那里我有“注销”选项。我想要的是,当我在登录活动中单击设备返回按钮时,它必须将我带到设备主屏幕。类似于“关闭应用程序”或“清除活动堆栈”

我试过这个:

Intent intent = new Intent(Activity_A.this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
但它不起作用,我还尝试在上面的代码中使用finish()int,然后它会将我带到在Activity_A之前调用的Activity(如预期的那样)

我搜索了我的案例,却找不到完美的解决方案,有人能帮我实现我想要的吗

我有一个想法,在我的登录活动中单击一次设备返回按钮,这样它就会显示设备的主屏幕,并清除所有的活动堆栈……可能吗?如果是,安全吗

这就是我在LoginActivity中所做的,它的工作方式与我所希望的一样

public void onBackPressed() {
    // TODO Auto-generated method stub
    super.onBackPressed();

    Intent startMain = new Intent(Intent.ACTION_MAIN);
    startMain.addCategory(Intent.CATEGORY_HOME);
    startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(startMain);
}

但是有没有其他方法可以在不覆盖onBackPressed()的情况下实现这一点?

您需要覆盖
back
按钮事件并在那里执行所有所需的操作

@Override

    public void onBackPressed() {
       //do whatever you desire
       return;
    }

尝试使用startActivityForResult

在活动A中:

Intent intent = new Intent(Activity_A.this, LoginActivity.class);
startActivityForResult(intent,0);

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == 0) {
        this.finish();
    }
}
在后勤活动方面:

LoginActivity.this.setResult(0);

称之为.finish();在onBackPressed()中终止当前活动。在启动
登录活动时,在
活动中调用
finish()
。这样,<代码> ActuviyIa<代码>将被清除,当你在<代码>登录活动中按<代码> Re/<代码>时,你将被带回家庭屏幕。是的,但是考虑一个我去A--- > B-> > C -> D的情况,A是我的登录活动,D是我的注销活动,现在如果我添加Fiffess()在活动D中,并在登录活动中使用设备,我将在活动C中结束,对吗??…而不是主屏幕…如果我写入finish();在所有的活动中,我不能从D回到C,C回到B,B回到A,这不是我想要的。从D开始,当你按back键时,你想进入主屏幕,我说对了吗?没有D是我有注销选项的地方,点击它会将我带到A…当我在设备上按back键时,我想进入设备主屏幕…而不在A中覆盖onBackPress