Android弹出dialog后无法捕捉back键的解决方法

发布时间 - 2026-01-11 03:14:21    点击率:

一、需求

在Android开发过程中,弹出dialog后无法捕捉back键,点击back按键无响应。

二、解决方案

原因:弹出dialog后,activity失去焦点,dialog获得当前焦点。

解决办法:在dialog中可以通过调用setOnKeyListener()方法来为dialog增加按键事件的监听。

private void createDialog() {
  AlertDialog.Builder builder = new AlertDialog.Builder(this);
  builder.setTitle(getString(R.string.acq_select_hint));

  builder.setPositiveButton(getString(R.string.dialog_cancel), (dialog, which) -> onCancelClicked(dialog));

  builder.setCancelable(false);
  
  builder.setOnKeyListener((dialog, keyCode, event) -> {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
      onCancelClicked(dialog);
    }
    return false;
  });
  builder.create().show();
}

private void onCancelClicked(DialogInterface dialog) {
  setResult(100);
  finish();
  dialog.dismiss();
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Android  # dialog  # back  # Android 解决dialog弹出时无法捕捉Activity的back事件问题  # Android解决dialog弹出时无法捕捉Activity的back事件的方法  # 弹出  # 可以通过  # 解决办法  # 来为  # 大家多多  # 过程中  # void  # setTitle  # private  # java  # AlertDialog  # Builder  # createDialog 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 三星、SK海力士获美批准:可向中国出口芯片制造设备  Angular 表单中正确绑定输入值以确保提交与验证正常工作  怎么用AI帮你设计一套个性化的手机App图标?  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  百度输入法ai组件怎么删除 百度输入法ai组件移除工具  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  如何在阿里云部署织梦网站?  php485函数参数是什么意思_php485各参数详细说明【介绍】  使用Dockerfile构建java web环境  三星网站视频制作教程下载,三星w23网页如何全屏?  专业商城网站制作公司有哪些,pi商城官网是哪个?  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  Laravel如何使用withoutEvents方法临时禁用模型事件  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  网站制作软件有哪些,制图软件有哪些?  在线制作视频网站免费,都有哪些好的动漫网站?  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  Laravel PHP版本要求一览_Laravel各版本环境要求对照  微信小程序 input输入框控件详解及实例(多种示例)  Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  成都网站制作公司哪家好,四川省职工服务网是做什么用?  悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  简历在线制作网站免费版,如何创建个人简历?  如何快速上传建站程序避免常见错误?  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  JS实现鼠标移上去显示图片或微信二维码  开心动漫网站制作软件下载,十分开心动画为何停播?  在线教育网站制作平台,山西立德教育官网?  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  如何用IIS7快速搭建并优化网站站点?  Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  手机网站制作与建设方案,手机网站如何建设?  青岛网站建设如何选择本地服务器?  Laravel DB事务怎么使用_Laravel数据库事务回滚操作  Android实现代码画虚线边框背景效果  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  Laravel如何集成Inertia.js与Vue/React?(安装配置)  Laravel如何使用Service Container和依赖注入?(代码示例)  Laravel如何创建自定义Facades?(详细步骤)  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  如何用西部建站助手快速创建专业网站?