1

我有一个 Activity_A ,它有一个注销选项。单击该按钮后,我调用了登录活动。因此,当我在登录活动中单击设备后退按钮时,它会将我带回具有注销选项的 Activity_A。我想要的是,当我在登录活动时单击设备后退按钮时,它必须将我带到设备主屏幕。诸如“关闭应用程序”或“清除活动堆栈”之类的东西。

我试过这个:

Intent intent = new Intent(Activity_A.this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

但它没有用,我也尝试在上面的代码中使用finish(),然后它把我带到我在Activity_A之前调用的Activity(如预期的那样)。

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

我有一个想法,在我的登录活动中覆盖设备后退按钮 onClick,以便它显示设备的主屏幕并清除所有活动堆栈......这可能吗?如果是,它安全吗?

这就是我在 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() 的情况下实现这一点?

4

2 回答 2

2

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

@Override

    public void onBackPressed() {
       //do whatever you desire
       return;
    }
于 2012-06-22T08:39:39.883 回答
1

尝试使用 startActivityForResult

在 Activity_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);
于 2012-06-22T08:47:43.907 回答