2

我有主要活动的应用程序等等。在每个其他活动上都有应用程序的徽标。当用户按下徽标按钮时,我想回到主要活动。

我不想创建新的意图,因为活动堆栈上的活动区域。

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

约夫

4

3 回答 3

4

我不想创建新的意图,因为活动堆栈上的活动区域。

如果您启动一个已经启动并位于堆栈上的活动(通过意图或任何其他方式),那么 Android 只需获取该活动的相同实例并将其放在堆栈顶部。未创建新实例。当然,如果您没有手动终止活动(通过调用finish()它),就会发生这种情况。

我怎样才能清除整个活动堆栈,所以后退按钮实际上会从应用程序中退出,而不是返回到上一个活动?

不建议在每个活动中覆盖后退按钮以退出应用程序(除非您的应用程序有充分的理由这样做)。通常,当用户按下后退按钮时,应用程序应该让用户回到上一个活动(这是用户可能期望的)。
如果您仍然想使用后退按钮退出,那么您可以覆盖后退按钮功能并启动通向主屏幕的意图:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
于 2012-05-26T10:26:22.757 回答
0

我遇到了一个类似的问题。以下链接可能对您有所帮助:

只需按一下即可清除一堆活动

于 2012-05-26T09:58:46.520 回答
0

它非常简单。不要在 Home/Main 活动上调用 finish()。例如:假设您有 4 个活动。如果您的要求是这样的 .. Act1-->Act2-->Act3-->Act4-->Act1 。所以,不要在 Act1 上调用 finish()。但是在您进行其他活动时,请在 Act2、Act3 上调用 finish()。所以当你点击Act4中的logo时,只需调用finish()。因此,您将自动返回到 Act1,这是您的主要活动。
如果您在 Act2 中有徽标,Act3 也会在单击徽标时调用 finish() 以返回 Main。但记得在从 Act2 转到 Act3 时在 Act2 上调用 finish()

于 2012-05-26T10:41:45.863 回答