我在下面有一系列活动启动:
首页活动->第二个活动->第三个活动->第四个活动
我想要实现的是,当第 3 个活动启动第 4 个活动时,它会从后台清除活动 2 和 3。因此,单击第 4 个活动返回到主活动
即用户应该仍然能够从第 3 个活动返回到第 2 个,但是一旦第 4 个活动启动,活动 2 和 3 就被删除了。
实现这一目标的配置是什么?
我在下面有一系列活动启动:
首页活动->第二个活动->第三个活动->第四个活动
我想要实现的是,当第 3 个活动启动第 4 个活动时,它会从后台清除活动 2 和 3。因此,单击第 4 个活动返回到主活动
即用户应该仍然能够从第 3 个活动返回到第 2 个,但是一旦第 4 个活动启动,活动 2 和 3 就被删除了。
实现这一目标的配置是什么?
听起来你想CLEAR_TOP。
尝试这个:
Intent i = new Intent(this, HomeActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
您可以在其实施BroadCastReceiver
中的第二和第三活动中注册。finish()
onReceive()
在启动 4th Activity 时触发广播。
如果它工作,移动相同的广播实现BaseClass
并添加一个布尔检查来注册广播与否。
如果您使用的是片段,您可以尝试
getFragmentManager().popBackStack("tag_of_fragment_to_pop", 0);
我认为最简单的方法是使用这样的东西:
Intent homeActivityIntent = new Intent(fourth.this,
home.class);
homeActivityIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
homeActivityIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(homeActivityIntent);
尽管所有答案都很有用,而且我只有 2 项活动我想关闭,这就是我所做的:
startActivityForResult()
关于活动 2RESULT_OK
在调用finish()
Activity 3 之前进行了设置。onActivityResult()
,这样我知道活动 4 已经启动,所以我可以完成活动 2。因此,活动 2 和活动 3 都在活动 4 启动时关闭。