7

我有 4 个 Android 活动。我们称它们为ABCD

正常流程是A => B => C => D。但是,当我输入D时,我想从后堆栈中删除BC。

可以解决吗?

请注意,如果用户在C中并按下回,则B仍应显示!

编辑:使用 CLEAR_TOP 再次启动活动 A 确实在我不想要的活动 A 上再次调用 onCreate 。还有其他解决方案吗?

4

3 回答 3

3

我知道这是一个老问题,但我最近遇到了同样的问题,在任何地方都找不到解决方案。我可以开始工作的唯一解决方案是有点破解:

使用 startActivityForResult从B开始C。

Intent intent=new Intent(this,C.class);
startActivityForResult(intent,REQUEST_CODE);

在 Activity C中,为 Activity D创建意图并将其设置为结果:

Intent intent=new Intent(this,D.class);
setResult(RESULT_OK,intent)
finish();

在 Activity B中,完成并启动从 Activity C返回的意图:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode==REQUEST_CODE) {
        finish();
        startActivity(data);
    }
}

此时,活动BC都将完成,活动堆栈将为A => D

于 2015-04-21T13:03:29.107 回答
0
于 2013-03-19T12:46:02.127 回答
-1

FLAG_ACTIVITY_CLEAR_TOP 清除您的 Activity 堆栈,您可以像下面的代码一样使用它:

intent = new Intent(this, YourActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
StartActivity(intent);
于 2013-03-19T12:45:09.790 回答