让我们假设我有以下活动的序列:
A - > B - > C - > D - > ë
当我从E来自DI想要做一些动作然后回到D而不保持堆栈中的E ..所以如果我回到D并按下Back Button我将返回C而不是E
怎么做???
答案 0 :(得分:1)
如果你在Android清单中为活动E添加它,它将不会出现在历史堆栈中。
android:noHistory="true"
答案 1 :(得分:0)
我不确定我是否完全理解这个
如果我回到D并按下Back Button,我将返回C而不是E
但如果我做了所有你需要做的就是当你在E完成后调用finish()
然后你会回到D,然后当你按回D时回到C.如果这不是你在说什么那么请澄清你的问题。但是,当你finish()
和Activity
时,它会从堆栈中清除掉,所以在你再次启动之前你永远不会返回E.按下后退按钮
在最基本的形式中,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() ;
}