1

假设我有以下活动的序列:

A -> B -> C -> D -> E

当我在 E 来自 DI 想要做一些动作然后回到 D 而不将 E 保留在堆栈中.. 所以如果我回到 D 并按下返回按钮我将返回 C 而不是 E

怎么做 ???

4

5 回答 5

1

如果您在 android 清单中为活动 E 添加它,它将不会出现在历史堆栈中。

android:noHistory="true"
于 2013-07-17T01:36:59.480 回答
0

我不确定我是否完全理解这一点

如果我回到 D 并按下返回按钮,我将返回 C 而不是 E

但是,如果我所做的一切就是finish()在您完成 E 时调用,那么您将返回 D,然后在您按 D 时返回 C。如果这不是您在说的,请澄清您的问题。finish()但是,当您Activity将其从堆栈中清除时,您将永远不会返回 E,直到您再次启动它。无论如何,您永远不会通过按后退按钮从 D

谷歌 I/O 导航

在其最基本的形式中,Activities它们以它们进入的方式彼此叠放在堆栈上。如果您通过调用finish()或按回键留下一个,那么它会被移除并被带到放在它之前的那个(其中你来自)。还有更多,但这是发生的事情的最基本的。

于 2013-07-17T01:36:22.553 回答
0

您应该调用不再需要的活动,而不是创建返回的新意图,this.finish();当用户按下后退按钮时也会“调用”它,此外,如果您正在创建一个新活动并且您希望按下回时要跳过的当前活动您仍然可以调用this.finish();,然后您可以调用this.startActivity(new Intent(this, ActivityName.class));

于 2013-07-17T01:36:44.277 回答
0

我认为这就是您进行活动堆栈的方式

A -> B -> C -> D -> E -> D(由 E 的意图启动)。

现在您想从第二个 D 转到 C。为此,在 E 中,finish()在您启动 D 后调用。这应该从堆栈中删除 E。

于 2013-07-17T01:50:19.357 回答
-1

如果我正确理解了您的问题;

您按照 A、B、C、D、E 的顺序进入 Activity-E。现在,当您按下返回按钮时,您将进入 Activity-D。这就是问题所在:当您再次按下返回按钮时,它会再次进入 Activity-E,但您想在此处继续 Activity-C。

所以你可以在Activity E中使用它

@Override
public void onBackPressed(){
    finish() ;            // ActivityE.this.finish()
    super.onBackPressed() ;
}
于 2013-07-17T02:03:36.080 回答