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后无法捕捉back键的更多相关文章
- android弹出dialog后,activity得到焦点
1.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,WindowManager.LayoutParams.FLAG ...
- Android中弹出对话框,AlertDialog关键代码
写在这里便于以后查看. Android中弹出对话框的关键代码: btn01.setOnClickListener(new OnClickListener() { @Override public vo ...
- 关于android在Service中弹出Dialog对话框
在创建好AlertDialog类型对象后,要 dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 同时还 ...
- android在Service中弹出Dialog对话框,即全局性对话框
先说具体做法,原因在其后给出: 写好Alter功能块后,在alter.show()语句前加入: alert.getWindow().setType(WindowManager.LayoutParams ...
- Android中弹出输入法界面不影响app界面布局
默认情况下,输入法弹出的时候,原来的view会被挤扁.有些应用不想被挤,它们可以接受被输入法view覆盖在上面.这时候需要在AndroidManifest.xml acitivty里面加上一句: an ...
- Android弹出Dialog使用举例
Android详细的对话框AlertDialog.Builder使用方法 7种形式的Android Dialog使用举例 第30章.常见对话框之一AlertDialog(从零开始学Android)
- Android 弹出Dialog时隐藏状态栏和底部导航栏
上代码 dialog.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); di ...
- IOS中弹出键盘后出现fixed失效现象的解决方案
概述 这个问题常出现在移动web开发中聊天或者留言页面的绝对定位输入框上,页面超过屏幕大小时候输入框focus状态下(键盘弹出)绝对定位的元素失效,导致页面滚动时候把定位元素一并带走,体验十分不好,在 ...
- 双击Back退出应用 android中弹出吐司
第一种方法: public void onBackPressed() { if (isState) { //isState初始值为true isState = false; Toast.makeTex ...
随机推荐
- svn 恢复删除文件
参考这个 https://blog.csdn.net/qdujunjie/article/details/37766167
- 桥接模式和nat模式的区别
桥接模式:VMware虚拟的系统就想局域网中独立的主机一样(有独立的IP)它可以访问网内任何一台机器 Nat模式:可以通过宿主机访问互联网(宿主机联网,虚拟机就能联网)它不能和本局域网中的其他主机进行 ...
- CentOS 7 安装phpredis和redis(接上一篇centos7安装lnmp)
一.安装扩展phpredis 1.PHP7 安装redis 扩展phpredis cd /root/software wget https://github.com/edtechd/phpredis/ ...
- php下kafka实践
Kafka是一种高吞吐的分布式发布订阅消息系统 kafka安装和简单测试 安装kafka 下载 wget https://www-us.apache.org/dist/kafka/2.1.1/kafk ...
- hive上传数据到oracle
# Oracle 建立hive外部表 使用oracle的大数据连接器向建立hive的外部表,在通过在oracle中根据外部表建立内部表(create table as select * from ex ...
- 局域网内yum源搭建
在一些环境下,服务器不能连接互联网,但是我们又偏偏需要安装一些软件,此时有点麻烦了.通过使用centos镜像文件,搭建yum本地源,局域网内所有服务器都可以连接这一本地源进行软件的下载和安装,下面具体 ...
- Spring Cloud的概述(二)
1.什么是spring cloud? spring cloud,基于spring boot提供了一套微服务的解决方案,包括服务的注册与发现,配置中心,全链路监控,服务网管,负载均衡,熔断等组件,除了基 ...
- vim 中文乱码怎么解决
一般来说只需要正确设置vim的编码识别序列就很少会遇到乱码问题: set fileencodings=ucs-bom,utf-8,utf-16,gbk,big5,gb18030,latin1 这个设置 ...
- sql server版本、组件和管理工具
以下信息由何问起收集,希望有帮助. SQL Server 版本 定义 Enterprise 作为高级版本, SQL Server Enterprise 版提供了全面的高端数据中心功能,性能极为快捷.虚 ...
- win7系统 LR11 安装与破解
注意一定要以管理员身份运行启动LR程序 Loadrunner11 安装: 1.运行“setup.exe” 2. 点击安装,其中会有提示缺少“Microsoft Visual C++ 2005 SP1等 ...