Android弹出dialog后无法捕捉back键的解决方法
一、需求
在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弹出时无法捕捉Activity的back事件问题
Android 如何解决dialog弹出时无法捕捉Activity的back事件 在一些情况下,我们需要捕捉back键事件,然后在捕捉到的事件里写入我们需要进行的处理,通常可以采用下面三种办法捕捉到back事件: 1)重写onKeyDown或者onKeyUp方法 2)重写onBackPressed方法 3)重写dispatchKeyEvent方法 这三种办法有什么区别在这里不进行阐述,有兴趣的朋友可以查阅相关资料. 然而在有dialog弹出时,想捕捉back键的事件的话,上述三种办法都无法实现.
-
Android解决dialog弹出时无法捕捉Activity的back事件的方法
本文实例讲述了Android解决dialog弹出时无法捕捉Activity的back事件的方法.分享给大家供大家参考.具体分析如下: 在一些情况下,我们需要捕捉back键事件,然后在捕捉到的事件里写入我们需要进行的处理,通常可以采用下面三种办法捕捉到back事件: 1)重写onKeyDown或者onKeyUp方法 2)重写onBackPressed方法 3)重写dispatchKeyEvent方法 这三种办法有什么区别在这里不进行阐述,有兴趣的朋友可以查阅相关资料. 然而在有dialog弹出时,
-
Android弹出dialog后无法捕捉back键的解决方法
一.需求 在Android开发过程中,弹出dialog后无法捕捉back键,点击back按键无响应. 二.解决方案 原因:弹出dialog后,activity失去焦点,dialog获得当前焦点. 解决办法:在dialog中可以通过调用setOnKeyListener()方法来为dialog增加按键事件的监听. private void createDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); bui
-
Android 弹出软键盘所遇到的坑及解决方法
demo下载 重要代码: //1.此layout作为最外层的layout: //2.设置需要调整的view: setAdjustView(View view); //3.如果需要控制输入框的显示与隐藏,可以实现OnInputViewVisibleListener接口: public class SoftInputAdjustLayout extends RelativeLayout { private static final String TAG = SoftInputAdjustLayout
-
Android 弹出Dialog时隐藏状态栏和底部导航栏的方法
上代码 dialog.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); dialog.getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() { @Override public void onSystemUi
-
Android 软键盘弹出时把原来布局顶上去的解决方法
键盘弹出时,会将布局底部的导航条顶上去. 解决办法: 在mainfest.xml中,在和导航栏相关的activity中加: <activity android:name=".filing.MainActivity" android:windowSoftInputMode="adjustResize|stateHidden" /> windowSoftInputMode 属性解释: 活动的主窗口如何与包含屏幕上的软键盘窗口交互.这个属性的设置将会影响两件事
-
BootStrap下的弹出框加载select2框架失败的解决方法
bootstrap下的弹出框加载select2框架失败的解决方案如下所示: $("#modal").on("shown.bs.modal", function(){ //等待弹出框弹出后再渲染select2控件 $("#select2").select2({ //再次渲染父界面后才能够加载出来数据. dropdownParent:$("#mpu_chart"), placeholder: '请选择变量', data:mpuKe
-
Android 从底部弹出Dialog(横向满屏)的实例代码
项目中经常需要底部弹出框,这里我整理一下其中我用的比较顺手的一个方式(底部弹出一个横向满屏的dialog). 效果图如下所示(只显示关键部分): 步骤如下所示: 1.定义一个dialog的布局(lay_share.xml) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/androi
-
Android 中从屏幕左下角弹出Dialog动画效果的实现代码
MainActivity代码: import android.app.Dialog; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.Window; import androi
-
Android 仿苹果底部弹出Dialog
style文件 <style name="ActionSheetDialogStyle" parent="@android:style/Theme.Dialog"> <!-- 背景透明 --> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:wind
-
详解Android 8.1.0 Service 中 弹出 Dialog的方法
场景:在Service 中开启线程下载升级包,当下载完系统升级包,弹出一个Dialog 提示用户. 注意,Android 系统版本不一样,可能会有不一样的表现.当前是基于 Android 8.1.0 的 Service 中弹 Dialog. 首先,就是要在功能清单列表中声明权限,以下两个都必须声明: <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/><!--这行代码必须存在,
-
Android弹出DatePickerDialog并获取值的方法
本文实例为大家分享了Android弹出DatePickerDialog并获取值的具体代码,供大家参考,具体内容如下 目标效果: 主界面有一个TextView,点击弹出日期选择器对话框,默认显示当前日期,选择后点击确定可以在TextView中显示选择的值. 1.activity_main.xml页面定义TextView. activity_main.xml页面: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res
随机推荐
- asp下正则实现URL自动链接的一个函数
- javascript 中String.match()与RegExp.exec()的区别说明
- 文本框获得焦点和失去焦点的判断代码
- JS加ASP二级域名转向的代码
- 使用淘宝IP库获取用户ip地理位置
- zend framework多模块多布局配置
- C#语法相比其它语言比较独特的地方(三)
- 详解docker 允许主机ssh连接到docker容器中
- Android实战教程第九篇之短信高效备份
- Vue.js每天必学之内部响应式原理探究
- Javascript表单特效之十大常用原理性样例代码大总结
- javascript:void(0)是什么意思示例介绍
- Android实现调用系统相册和拍照的Demo示例
- 21个值得收藏的Javascript技巧
- 注意!公安部列出的恶意网站黑名单
- 深入解析C++编程中的纯虚函数和抽象类
- IIS7.X配置PHP运行环境小结
- C#正则匹配RegexOptions选项的组合使用方法
- 技巧“七招鲜”
- python实现文件助手中查看微信撤回消息