2013-07-17 63 views
1

让我们假设我有以下活动的顺序:从历史堆栈中删除的活动

甲 - >乙 - “ç - > d - >电子

,当我在E会从DI未来希望做一些操作,然后返回到d没有堆栈保持对E ..所以,如果我有回d,然后按后退按钮,我将返回到C不Ë

如何做到这一点???

+0

如果你是在d按回去,回到C. – iTurki

+0

我的意思是与后,我给E返回d那么如果我按回,但我应该回到C –

+0

你会回到C.这不是你想要的吗? – codeMagic

回答

0

我不知道如果我完全理解这个

如果我回到d,然后按返回键,我将返回到C不Ë

但如果我做所有你要做的就是调用finish()当您在大功告成那么当你按下回D.如果这不是你所谈论的,那么请澄清你的问题是什么,你将返回到d,然后到C。但是,当你finish()Activity然后将其从堆栈中清除,所以你永远不会,直到你再次启动它返回到E。你永远不会从d反正按后退按钮

Google I/O Navigation

在其最基本的形式,Activities在他们来。如果你离开一个方式放在堆栈上彼此的顶部,由打电话finish()或按回去,然后它被删除,你被带到它之前(你来自哪里)。还有更多,但这是发生的事情的基本。

+0

我的意思是与后我从回E到D然后如果我按回,但我应该回到C ,,,在哪里调用完成功能? –

+0

当你在E完成时,你可以调用'finish()'。但是,如果你按下E键,它会做同样的事情。如果你再按回D,你会回到C假设你还没有清除掉堆栈 – codeMagic

+0

不,我想通过使用Intent而不是按回退按钮 –

0

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

1

如果在活动E的Android清单中添加此项,它将不会出现在历史记录堆栈中。

android:noHistory="true" 
+0

然后,他会离开应用程序时,按下D – codeMagic

+0

你的意思是E对?不是D –

+0

不是。看到我的回答,我要发布一个你需要观看的链接。非常有帮助 – codeMagic

0

我觉得这是你怎么做你的活动堆栈

甲 - >乙 - “ç - > d - >电子 - > d(按意图给E推出)。

现在你想从第二个D去到C.要做到这一点,在E中,在你启动D后调用finish()。这应该从堆栈中删除E.

-1

如果我理解正确你的问题。

你去到活动-E在A的序列,B,C,d,E 现在你会在活动-d时,你会按后退按钮。 这里的问题是:当你再次按后退按钮,再次进入到活动-E,但你想要去的活动-C在这里。

所以,你可以用它在动鄂

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

onBackPressed按原样删除活动,不需要完成 –