@Override
public void onBackPressed() {
AlertDialog.Builder mensaje=new AlertDialog.Builder(this);
mensaje.setTitle("¿Desea Salir de la Aplicacion?");
mensaje.setCancelable(false);
mensaje.setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
mensaje.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
mensaje.show();
}
finish()
销毁一个活动,您将无法访问它,直到您重新创建它。onBackPressed()
返回到您当前所在的活动或片段之前,这完全取决于您如何对其进行编程。例如,如果你改变activity时用 破坏了前一个
finish()
,这样做时onBackPressed()
它不会找到前一个,它会关闭应用程序,这会给你一种它是afinish()
而不是它的感觉,它仅将应用程序置于后台(我认为这就是您可能会感到困惑的原因)。活动 A -> 活动 B
finish()
-> 活动 C在这种情况下,如果您在活动 C中并且执行了 a,您
onBackPressed()
将返回到活动 A。活动 B
finish()
-> 活动 C在这种情况下,如果您在Activity C中并且
onBackPressed()
将应用程序留在后台结束()
它是一个结束活动的函数,将其从活动堆栈中删除。
自然地在活动之间导航
A->B->C
回压时C->B->A
如果它用于
finish()
任何活动A->B(finish)->C
按回C->A
一个实际的例子是一个启动画面,当它的加载完成时,它会传递给另一个活动,但从堆栈中删除它,所以如果用户执行返回的操作,它将退出应用程序。
SplasCreanActivity.java
OnBackPressed()
是检测返回事件,当用户执行返回动作时,使用物理按钮、虚拟按钮或
UpNavButton
用途可以多种多样,防止在有任务进行时退出应用程序,计算双击退出应用程序...
后退按钮默认调用
finish()
,但如果您想覆盖此方法,请在返回之前添加代码并终止Activity
您必须创建onBackPressed()
.还有一种方法可以识别何时按下后退按钮
但正确的做法是:
版
当覆盖该方法时
onBackPressed()
,用户应该知道他为什么要覆盖它,如果他想返回Activity
前一个而不做任何更改,这是没有意义的。但是,我将举一个例子。如果我们想修改后退事件并警告用户“你确定要退出”,建议编写此方法并告诉该方法它必须返回到Activity
前一个或用户想要的那个。我引用@FabioVenturiPastor
如上所述,如果用户重写该方法并且不执行任何附加代码并且未指定它
activity
应该返回,那么它没有任何意义。结束()
finish():当这个方法被调用时,Activity 被关闭并销毁。该方法可以在任何需要的地方调用,例如通过与 UI 中的某些元素交互或通过在我们的应用程序中执行某些操作来触发。
onBackPressed()
onBackPressed():当您实现此方法时,与finish()不同,当您单击“后退”按钮并且您不需要在其中显式调用finish()时,它会被专门调用,如果您调用
super.onBackPressed()
它是因为它在内部调用finish()
.如果您不打电话
super.onBackPressed()
并想终止活动,则必须致电finish()
:重要的是,如果onBackPressed()调用 finish() ,这两种方法(位于 Activity 中并具有空的返回栈)都可以关闭应用程序。
总而言之,finish()结束 Activity 并销毁它,而onBackPressed()可以检测我们何时激活“返回”按钮,它会检测“返回”事件并在内部执行
finish()
。当用户按下返回软键时,finish() 方法将终止活动,并且将执行 onBackPressed() 方法。作为补充,因为关于片段的这些方法的信息不多,这就是我所使用的。如果我们想在一个片段中完成活动,它将是:“它在一个片段中”
如果您使用片段,并且希望在按下后退按钮时出现提示,说明您是否要退出应用程序,则代码必须在所有片段调用开始的主活动中完成。“它在 main_activity 中”: