从历史堆栈中删除活动

时间:2013-07-17 01:33:39

标签: android android-activity

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

A - > B - > C - > D - > ë

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

怎么做???

5 个答案:

答案 0 :(得分:1)

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

android:noHistory="true"

答案 1 :(得分:0)

我不确定我是否完全理解这个

  

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

但如果我做了所有你需要做的就是当你在E完成后调用finish()然后你会回到D,然后当你按回D时回到C.如果这不是你在说什么那么请澄清你的问题。但是,当你finish()Activity时,它会从堆栈中清除掉,所以在你再次启动之前你永远不会返回E.按下后退按钮

,你永远不会从D

Google I/O Navigation

在最基本的形式中,Activities以它们进入的方式放在堆叠中。如果你离开一个,通过调用finish()或按回来,那么它是删除,你被带到它前面的那个(你来自哪里)。还有更多内容,但这是发生的事情的基础。

答案 2 :(得分:0)

而不是创建一个新的回归意图,你应该在你不再需要的活动上调用this.finish();,当用户按下后退按钮时,这将被“调用”,如果你是创建新活动并希望在按下时跳过当前活动,您仍然可以拨打this.finish();,然后拨打this.startActivity(new Intent(this, ActivityName.class));

答案 3 :(得分:0)

我认为这就是你做活动堆栈的方式

A - > B - > C - > D - > E - > D(意图从E发起)。

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

答案 4 :(得分:-1)

如果我理解你的问题;

  

您按照A,B,C,D,E的顺序前往Activity-E。   现在,当您按下后退按钮时,您将进入Activity-D。   这就是问题所在:当你再次按下后退按钮时,它再次进入Activity-E,但是你想在这里继续使用Activity-C.

因此,您可以在活动E中使用

@Override
public void onBackPressed(){
    finish() ;            // ActivityE.this.finish()
    super.onBackPressed() ;
}