Android跳转MainActivity后如何处理返回键实现退出确认弹窗
实现方案
你现有LoginActivity的跳转逻辑已经将LoginActivity从应用返回栈中完全清除,MainActivity会成为返回栈内唯一的页面,因此只需要在MainActivity中添加返回键拦截逻辑即可实现需求,原有LoginActivity的跳转代码无需修改。
方案1:重写onBackPressed方法(兼容全版本)
直接在MainActivity中添加如下重写方法即可:
@Override public void onBackPressed() { new AlertDialog.Builder(this) .setMessage("您确定要退出应用吗?") .setPositiveButton("确定", (dialog, which) -> { // 关闭当前页面后栈为空,直接退出应用 finish(); // 如需彻底关闭应用所有页面可替换为 finishAffinity(); }) .setNegativeButton("取消", null) .show(); }
方案2:使用OnBackPressedCallback(AndroidX推荐写法)
如果你的项目适配AndroidX,更推荐使用官方推荐的返回回调方式,在MainActivity的onCreate方法中注册回调即可:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); OnBackPressedCallback backCallback = new OnBackPressedCallback(true) { @Override public void handleOnBackPressed() { new AlertDialog.Builder(MainActivity.this) .setMessage("您确定要退出应用吗?") .setPositiveButton("确定", (dialog, which) -> finish()) .setNegativeButton("取消", null) .show(); } }; getOnBackPressedDispatcher().addCallback(this, backCallback); }
内容的提问来源于stack exchange,提问作者muhammedlevent
相关产品推荐
相关产品推荐

