创建一个按钮来关闭程序

时间:2013-08-20 19:06:45

标签: android button

我的项目有4个活动,活动A的用户在此之后转到B到C和D.我需要在活动D中创建一个按钮来直接关闭程序,因为如果用户必须关闭所有活动(D - > C) - > B - > A->关闭)这将是不友好的。

6 个答案:

答案 0 :(得分:2)

在每个活动中注册一个广播接收器,监听“关闭所有动作”,当按下最后一个活动中的按钮时,发送该广播,所以所有活动注册将执行他们的“onReceive”方法broadcastreceiver,只要他们注册,他们就会完成。 这绝对可以解决问题,虽然老实说安静性很差,但你在导航中出错的可能性很高,也许片段或标签更适合你正在尝试的东西,而不是创造这样的东西。一堆活动......

希望这会有所帮助......

问候!

答案 1 :(得分:2)

我认为onActivityResult可能是更好的选择。如果需要完成任务,您可以完成活动,否则只需回溯之前的活动

答案 2 :(得分:0)

您应该覆盖每个onBackPressed()的{​​{1}}并致电Activity

答案 3 :(得分:0)

假设您的应用程序中的第一个活动名为ActivityMain。据推测,它将是堆叠中最老的一个。

使用标志FLAG_ACTIVITY_CLEAR_TOP创建启动ActivityMain的意图。在该intent中设置一个额外的内容以指示这是一个应用程序出口,并使用该intent调用startActivity()。这将清除堆栈并让您回到Activity main。

在ActivityMain中调用getIntent(),然后检查退出的应用程序Extra值。如果已设置,请调用finish()。

答案 4 :(得分:0)

一个不那么优雅的解决方案:

而不是致电startActivity,请致电startActivityForResult,从A到D。

在活动D上,按下按钮时,设置任何结果(比方说Activity.RESULT_OK)并拨打finish()

在每个活动(从A到C)上,覆盖方法onActivityResult以检查结果。如果结果为Activity.RESULT_OK,则您设置相同的结果并再次调用finish()

如果您愿意,可以添加带有一些标志的Intent,而不仅仅是设置结果,以告知之前的活动自行完成。

答案 5 :(得分:0)

简单地做一件事。在您的活动中添加一个重写的方法onPause

onPause(){
finish();
}

一旦您从任何活动中退回,这将关闭您的所有活动。