我的项目有 4 个活动,用户从活动 A 转到 B,然后转到 C 和 D。我需要在活动 D 中创建一个按钮来直接关闭程序,因为如果用户必须关闭所有活动( D -> C -> B - > A-> 关闭)这将是不友好的。
6 回答
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
在每个活动中注册一个广播接收器,监听“关闭所有操作”,当最后一个活动中的按钮被按下时,发送该广播,因此所有活动注册将在广播接收器上执行它们的“onReceive”方法,并且只要注册完成,所有这些都将完成。这肯定会奏效,虽然老实说这是一个糟糕的实现,你在导航中做错的可能性很高,也许片段或选项卡更适合你正在尝试的东西,而不是创建这样的一堆活动...
希望这可以帮助...
问候!
只做一件事。在您的活动中添加一个覆盖方法 onPause
onPause(){
finish();
}
一旦您从任何活动中按下,这将关闭您的所有活动。
您应该onBackPressed()
从 each覆盖Activity
并调用finish()
.
假设您的应用程序中的第一个活动名为 ActivityMain。大概它将是堆栈中最旧的一个。
使用标志 FLAG_ACTIVITY_CLEAR_TOP 创建启动 ActivityMain 的意图。在该 Intent 中设置一个 extra 以指示这是一个应用程序出口,并使用该 Intent 调用 startActivity()。这将清除堆栈并让您回到 Activity main。
在 ActivityMain 调用 getIntent() 然后检查退出的应用程序额外值。如果已设置,请调用 finish()。
一个不太优雅的解决方案:
而不是调用startActivity
,调用startActivityForResult
,从 A 到 D。
在活动 D 上,按下按钮时,设置任何结果(比如说Activity.RESULT_OK
)并调用finish()
.
在每个 Activity(从 A 到 C)上,重写方法onActivityResult
以检查结果。如果结果是Activity.RESULT_OK
,那么您设置相同的结果并finish()
再次调用。
如果您愿意,不只是设置结果,还可以添加一个Intent
带有一些标志的标志来告诉之前的活动自行完成。