2012-05-26 62 views
2

我有主要活动和更多的应用程序。 在彼此的活动有应用程序的标志。 当用户按下标志按钮时,我想回到主要活动。从活动堆栈中重新使用Android活动并清除它

我不想创建新的意图,因为活动堆栈上的活动已经结束。

我怎样才能得到它 - 使用堆栈中的一个? 如何清除整个活动堆栈,所以后退按钮实际上会退出应用程序而不是回到以前的活动?

Yoav

+0

您需要尝试理解Android文档中的Activity Activity LifeCycle并查看finish()函数。 –

回答

3

我不希望创建新的意图,因为AREADY上的活动堆栈活动。

如果您启动了一个已经启动且位于堆栈上的活动(即通过意图或任何其他方式),那么Android只会将该活动的相同实例放置在堆栈顶部。一个新的实例不会被创建。当然,如果你没有手动杀死这个活动(通过调用finish()),就会发生这种情况。

如何清除整个活动堆栈,所以后退按钮实际上会退出应用程序而不是回到以前的活动?

它不建议覆盖后退按钮退出每个活动中的应用程序(除非你的应用程序有强烈的理由这样做)。通常应用程序应该让用户在按下后退按钮时回到之前的活动状态(这是用户可能期望的)。
如果您仍想与返回键退出,那么你可以重写后退按钮功能,启动通向主屏幕的意图:

Intent intent = new Intent(Intent.ACTION_MAIN); 
intent.addCategory(Intent.CATEGORY_HOME); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 
0

它非常简单。 不要在主页/主要活动中调用finish()。 例如:假设您有4项活动..如果您的要求是这样的话。Act1 - > Act2 - > Act3 - > Act4 - > Act1。所以,不要在Act1上调用finish()。但是当您正在进行其他活动时,请在Act2 Act3上致电完成()。所以当你点击Act4中的标志时,只需调用finish()。所以,你会自动回到Act1这是你的主要活动。
如果您在Act2中有标识,则Act3也会在标识点击后返回Main以调用finish()。但是记得在从Act2到Act3时调用Act2上的finish()