1

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

4

6 回答 6

2

I think onActivityResult could be the better option.You could finish the activity if required task is being completed otherwise just backtrack on previous activity

于 2013-08-20T19:38:31.960 回答
2

在每个活动中注册一个广播接收器,监听“关闭所有操作”,当最后一个活动中的按钮被按下时,发送该广播,因此所有活动注册将在广播接收器上执行它们的“onReceive”方法,并且只要注册完成,所有这些都将完成。这肯定会奏效,虽然老实说这是一个糟糕的实现,你在导航中做错的可能性很高,也许片段或选项卡更适合你正在尝试的东西,而不是创建这样的一堆活动...

希望这可以帮助...

问候!

于 2013-08-20T19:23:19.547 回答
0

只做一件事。在您的活动中添加一个覆盖方法 onPause

onPause(){
finish();
}

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

于 2013-08-20T20:55:52.297 回答
0

您应该onBackPressed()从 each覆盖Activity并调用finish().

于 2013-08-20T19:11:01.980 回答
0

假设您的应用程序中的第一个活动名为 ActivityMain。大概它将是堆栈中最旧的一个。

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

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

于 2013-08-20T19:28:01.477 回答
0

一个不太优雅的解决方案:

而不是调用startActivity,调用startActivityForResult,从 A 到 D。

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

在每个 Activity(从 A 到 C)上,重写方法onActivityResult以检查结果。如果结果是Activity.RESULT_OK,那么您设置相同的结果并finish()再次调用。

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

于 2013-08-20T19:40:48.923 回答