【问题标题】:Remove "start"-activity from the history [duplicate]从历史记录中删除“开始”活动[重复]
【发布时间】:2011-08-13 01:19:30
【问题描述】:

可能重复:
Removing an activity from the history stack

我正在寻找从历史堆栈中删除 StartActivity 的解决方案。 StartActivity 是一开始就启动的活动。我正在使用这个类来检查一些用户值,如果一切正确,我想将用户重定向到 MainActivity。

我试图设置一个标志:

addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

但这并没有做它应该做的。

App starts -> StartActivity -> MainActivity -> PRESS back -> the app should end

确实如此:

App starts -> StartActivity -> MainActivity -> PRESS back -> StartActivity

感谢您的帮助!

编辑:这是我用来启动 MainActivity 的代码:

Intent i = new Intent(context, DashBoardActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);

【问题讨论】:

  • 能否请您发布代码以在活动之间切换?

标签: android


【解决方案1】:

您可以在启动 MainActivity 后简单地调用 finish()

Intent i = new Intent(context, DashBoardActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
finish();

【讨论】:

  • 当然这种方法也行得通,但是当他提到从历史中删除时,我首先想到的是 flag。
  • 是的,您的解决方案可能是归档它的正确方法。我的一个更快速和肮脏。 ;)
  • 谢谢,您的解决方案有效。但另一个解决方案@Zelimir 似乎更优雅。
  • 谢谢,从文档中并没有立即明确您需要传递 FLAG_ACTIVITY_CLEAR_TOP 并还调用 finish()
【解决方案2】:

您应该在启动 StartActivity 时使用FLAG_ACTIVITY_NO_HISTORY 来实现所描述的行为。

如果您在 AndroidManifest.xml 中将 noHistory 属性设置为 true,您可能会实现同样的效果。

【讨论】:

  • 注意:如果您尝试使用像 facebook 这样的登录提供程序(它会启动它自己的活动,然后将您返回到您的开始活动),则此方法不起作用
  • 这是我的情况,有什么提示如何处理吗?
猜你喜欢
  • 1970-01-01
  • 2017-12-14
  • 2014-06-24
  • 2013-05-04
  • 2012-12-14
  • 2013-03-22
  • 1970-01-01
  • 1970-01-01
  • 2010-12-26
相关资源
最近更新 更多