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


相关推荐: iOS UIView常见属性方法小结  如何在服务器上配置二级域名建站?  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  网站制作软件有哪些,制图软件有哪些?  Python文件流缓冲机制_IO性能解析【教程】  如何在服务器上三步完成建站并提升流量?  Bootstrap整体框架之CSS12栅格系统  如何在搬瓦工VPS快速搭建网站?  Internet Explorer官网直接进入 IE浏览器在线体验版网址  zabbix利用python脚本发送报警邮件的方法  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  高端建站如何打造兼具美学与转化的品牌官网?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  Android仿QQ列表左滑删除操作  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  如何在云虚拟主机上快速搭建个人网站?  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  利用JavaScript实现拖拽改变元素大小  香港服务器租用每月最低只需15元?  如何实现建站之星域名转发设置?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  JS弹性运动实现方法分析  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  bing浏览器学术搜索入口_bing学术文献检索地址  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  做企业网站制作流程,企业网站制作基本流程有哪些?  Android自定义控件实现温度旋转按钮效果  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  JavaScript如何实现类型判断_typeof和instanceof有什么区别  西安专业网站制作公司有哪些,陕西省建行官方网站?  Laravel如何使用.env文件管理环境变量?(最佳实践)  北京企业网站设计制作公司,北京铁路集团官方网站?  Android Socket接口实现即时通讯实例代码  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  微信小程序 require机制详解及实例代码  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  实现点击下箭头变上箭头来回切换的两种方法【推荐】  香港服务器WordPress建站指南:SEO优化与高效部署策略  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  Android利用动画实现背景逐渐变暗  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  Laravel Fortify是什么,和Jetstream有什么关系  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程