2

我在下面有一系列活动启动:

首页活动->第二个活动->第三个活动->第四个活动

我想要实现的是,当第 3 个活动启动第 4 个活动时,它会从后台清除活动 2 和 3。因此,单击第 4 个活动返回到主活动

即用户应该仍然能够从第 3 个活动返回到第 2 个,但是一旦第 4 个活动启动,活动 2 和 3 就被删除了。

实现这一目标的配置是什么?

4

4 回答 4

3

听起来你想CLEAR_TOP

尝试这个:

Intent i = new Intent(this, HomeActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
于 2015-11-02T22:39:02.203 回答
2

您可以在其实施BroadCastReceiver中的第二和第三活动中注册。finish()onReceive()

在启动 4th Activity 时触发广播。

如果它工作,移动相同的广播实现BaseClass并添加一个布尔检查来注册广播与否。

如果您使用的是片段,您可以尝试

getFragmentManager().popBackStack("tag_of_fragment_to_pop", 0);

于 2015-11-02T22:42:56.140 回答
1

我认为最简单的方法是使用这样的东西:

Intent homeActivityIntent = new Intent(fourth.this,
                        home.class);
homeActivityIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
homeActivityIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(homeActivityIntent);
于 2015-11-02T22:38:02.830 回答
0

尽管所有答案都很有用,而且我只有 2 项活动我想关闭,这就是我所做的:

  1. startActivityForResult()关于活动 2
  2. 在 Activity 3 上成功启动 Activity 4 时,我RESULT_OK在调用finish()Activity 3 之前进行了设置。
  3. 在活动 2 上,我处理成功的结果onActivityResult(),这样我知道活动 4 已经启动,所以我可以完成活动 2。

因此,活动 2 和活动 3 都在活动 4 启动时关闭。

于 2015-11-10T17:25:14.087 回答