一、需求

在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键的更多相关文章

  1. android弹出dialog后,activity得到焦点

    1.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,WindowManager.LayoutParams.FLAG ...

  2. Android中弹出对话框,AlertDialog关键代码

    写在这里便于以后查看. Android中弹出对话框的关键代码: btn01.setOnClickListener(new OnClickListener() { @Override public vo ...

  3. 关于android在Service中弹出Dialog对话框

    在创建好AlertDialog类型对象后,要 dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 同时还 ...

  4. android在Service中弹出Dialog对话框,即全局性对话框

    先说具体做法,原因在其后给出: 写好Alter功能块后,在alter.show()语句前加入: alert.getWindow().setType(WindowManager.LayoutParams ...

  5. Android中弹出输入法界面不影响app界面布局

    默认情况下,输入法弹出的时候,原来的view会被挤扁.有些应用不想被挤,它们可以接受被输入法view覆盖在上面.这时候需要在AndroidManifest.xml acitivty里面加上一句: an ...

  6. Android弹出Dialog使用举例

    Android详细的对话框AlertDialog.Builder使用方法 7种形式的Android Dialog使用举例 第30章.常见对话框之一AlertDialog(从零开始学Android)

  7. Android 弹出Dialog时隐藏状态栏和底部导航栏

    上代码 dialog.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); di ...

  8. IOS中弹出键盘后出现fixed失效现象的解决方案

    概述 这个问题常出现在移动web开发中聊天或者留言页面的绝对定位输入框上,页面超过屏幕大小时候输入框focus状态下(键盘弹出)绝对定位的元素失效,导致页面滚动时候把定位元素一并带走,体验十分不好,在 ...

  9. 双击Back退出应用 android中弹出吐司

    第一种方法: public void onBackPressed() { if (isState) { //isState初始值为true isState = false; Toast.makeTex ...

随机推荐

  1. Java成员变量与局部变量的区别

    从语法形式上看,成员变量是属于类的,而局部变量是在方法中定义的变量或是方法的参数:成员变量可以被public,private,static等修饰符所修饰,而局部变量不能被访问控制修饰符及static所 ...

  2. java中mysql查询报错java.sql.SQLException: Before start of result set

    异常:java.sql.SQLException: Before start of result set 解决方法:使用rs.getString();前一定要加上rs.next(); sm = con ...

  3. python jieba 库分词结合Wordcloud词云统计

    import jieba jieba.add_word("福军") jieba.add_word("少安") excludes={"一个", ...

  4. Ubuntu配置ORB-SLAM2过程中的问题

    https://www.imooc.com/article/details/id/29136 1. 提示“CMAKE_CXX_COMPILER-NOTFOUND ” 具体形式: Check for w ...

  5. 泛型List去除重复指定字段

    泛型List去除重复指定字段ID var list=listTemp.Distinct(new IDComparer ()).ToList(); 重写比较的方法: public class IDCom ...

  6. Oracle数值处理函数

    1.绝对值:abs()    select abs(-2) value from dual; 2.取整函数(大):ceil()    select ceil(-2.001) value from du ...

  7. nginx学习笔记(三)

    nginx变量 有一些内建变量是支持改写的,其中一个例子是 $args. 这个变量在读取时返回当前请求的 URL 参数串(即请求 URL 中问号后面的部分,如果有的话) 我们看一个通过修改 $args ...

  8. Git push 提交代码到远程global user.name错误解决办法

    问题:安装了Git-1.9.4-preview和TortoiseGit等工具后,Git服务器开通了账号和密码并配置了邮箱.克隆了服务器代码到本地,按需求进行代码开发.提交本地代码到服务器时出现错误.具 ...

  9. https及证书

    本文试图以通俗易通的方式介绍Https的工作原理,不纠结具体的术语,不考证严格的流程.我相信弄懂了原理之后,到了具体操作和实现的时候,方向就不会错,然后条条大路通罗马.阅读文本需要提前大致了解对称加密 ...

  10. AspNetCore OpenId

    1 Server端 public class Startup { public Startup(IConfiguration configuration) { Configuration = conf ...