1

我的堆栈中目前有一些活动,让我们想象一下:

A、B、C、D、E。

我在活动 E 中,我的“向上导航”应该将活动 A 带到前面并完成(B、C、D)。

我目前正在与:

        case android.R.id.home:
            Intent intent = new Intent(this, ActivityA.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
            startActivity(intent);
            finish();
            return true; 

这很好,活动 A 恢复到以前的状态,但 (B,C,D) 仍然存在。

有没有办法正确完成(B,C,D)?

注意:我正在寻找避免像 onActivityResult 这样在复杂的应用程序结构中无法处理的复杂内容

谢谢。

4

2 回答 2

1

试试这个:

  case android.R.id.home:
        Intent intent = new Intent(this, ActivityA.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);
        finish();
        return true; 
于 2013-08-04T09:44:16.650 回答
0

我认为FLAG_ACTIVITY_CLEAR_TOP这是你需要的:

如果设置,并且正在启动的活动已经在当前任务中运行,那么不会启动该活动的新实例,而是关闭它上面的所有其他活动,并且此 Intent 将被传递到(现在顶部)作为新意图的旧活动。

尽管如果您想重用 Activity A 的现有实例(通过onNewIntent()),那么您可能还需要FLAG_ACTIVITY_SINGLE_TOP在 Intent 中进行设置。

于 2013-08-04T09:44:19.290 回答