4

我的应用程序中的活动流。

WelcomeActivity -> SignInActivity -> SignUpActivity -> TabsActivity(这是主要的)-> ...


活动堆栈


我想在启动 TabsActivity 时关闭所有以前的活动(欢迎、登录、注册)。

我尝试了几种方法...

  1. 标签活动。启动时清除任务 = true ?但不工作(也许)

  2. 标签活动。启动模式 = 单任务?但不工作

但我不想“保存 3 个活动并调用每个 activity.finish()”

根据情况,“可用 2 或 4 个活动而不是 3 个”,或“我不知道活动堆栈中有哪些活动”。


我想清除所有以前的活动,不管任何情况。

帮我 :)

对不起,我的英语很差...谢谢。

4

6 回答 6

6

如果我理解正确,您可能想尝试TabsActivity使用以下代码开始:

    Intent intent = new Intent(getApplicationContext(), TabsActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);

该标志Intent.FLAG_ACTIVITY_CLEAR_TOP清除历史记录。

于 2013-05-22T08:57:56.787 回答
2

尝试FLAG_ACTIVITY_NEW_TASK按照文档中的说明添加FLAG_ACTIVITY_CLEAR_TOP

这种启动模式也可以与 FLAG_ACTIVITY_NEW_TASK 结合使用,效果很好:如果用于启动任务的根活动,它将将该任务的任何当前正在运行的实例带到前台,然后将其清除为根状态。这尤其有用,例如,当从通知管理器启动活动时。

Intent intent = new Intent(this, TabActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
于 2013-05-22T08:53:43.730 回答
1

试试这个,

清除所有活动。这里有一些很好的教程来解决清除堆栈竞争。请通过它。

谢谢

于 2013-05-22T08:57:27.080 回答
0

清除android的Backstack,从那里调用tabActivity

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

于 2013-05-22T08:56:38.417 回答
0

采用

Intent intent = new Intent(getApplicationContext(), ClassToLaunch.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

至此之前的活动结束

于 2013-05-22T08:57:13.663 回答
0

要关闭以前的活动,您应该使用 startActivityForResult 启动新活动,然后在使用完成()调用结束当前活动之前,为以前的活动设置结果(值),然后以前的活动将获得一个回调,您可以在其中调用完成()以前的活动。

于 2013-05-22T08:57:30.593 回答