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
随机推荐
- js对象的构造和继承实现代码
- 校内网,大学生校内网的定义
- 五种windows密码设置及破解
- java 栈和堆区别详细介绍
- asp.net中Datalist使用数字分页的实现方法
- C++中几种将整数转换成二进制输出的方法总结
- java实现ftp上传 如何创建文件夹
- layer弹窗插件操作方法详解
- Javascript自定义事件详解
- JS实现图文并茂的tab选项卡效果示例【附demo源码下载】
- 浅谈java中Math.random()与java.util.random()的区别
- Asp.Net权限管理系统 专用代码生成工具(DDBuildTools) 1.1.0 下载
- Java实现排队论的原理
- Java 实现二叉搜索树的查找、插入、删除、遍历
- Java Filter 过滤器详细介绍及实例代码
- JavaScript获取两个数组交集的方法
- PHP单例模式与工厂模式详解
- Andorid 日历控件库,可左右滑动,显示公历,农历,节假日等功能
- Android 自定义返回按钮的实例详解
- Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题