转于:http://www.cnblogs.com/dolphin0520/p/3414128.html
--------------------------------------------------------------------------------------
在一些情况下,我们需要捕捉back键事件,然后在捕捉到的事件里写入我们需要进行的处理,通常可以采用下面三种办法捕捉到back事件:
1)重写onKeyDown或者onKeyUp方法
2)重写onBackPressed方法
3)重写dispatchKeyEvent方法
这三种办法有什么区别在这里不进行阐述,有兴趣的朋友可以查阅相关资料。
然而在有dialog弹出时,想捕捉back键的事件的话,上述三种办法都无法实现。因为上述方法是重写在activity里面的,也就是说当activity是当前焦点时,它可以捕捉到相应的back键事件,而有dialog弹出时,dialog获取了当前焦点,所以activity里面的方法无法获取到back键事件,此时有两种思路:
1)设置dialog的setOnCancelListener监听:
selectDialog.setOnCancelListener(new OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { // TODO Auto-generated method stub // Toast.makeText(getBaseContext(), "点击了back", Toast.LENGTH_SHORT).show(); } });
这样就可以捕捉到back键的事件了,当按下back键时,系统默认的操作会让dialog cancel掉,此时会触发OnCancelListener,然后在onCancel方法里面就可以实现自己想要实现的操作了。
2)设置dialog的setOnKeyListener并重写dispatchKeyEvent方法
selectDialog.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { // TODO Auto-generated method stub if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount()==0) { dialog.dismiss(); } return false; } }); public boolean dispatchKeyEvent(KeyEvent event) { switch(event.getKeyCode()) { case KeyEvent.KEYCODE_BACK: Toast.makeText(getBaseContext(), "点击了back", Toast.LENGTH_SHORT).show(); break; default: break; } return super.dispatchKeyEvent(event); }
然后在dispatchKeyEvent里面就可以实现自己想要实现的操作了。
相关推荐
Android 如何解决dialog弹出时无法捕捉Activity的back事件 在一些情况下,我们需要捕捉back键事件,然后在捕捉到的事件里写入我们需要进行的处理,通常可以采用下面三种办法捕捉到back事件: 1)重写onKeyDown...
这两种方法都能够解决在dialog显示时无法捕获Activity的back事件的问题。选择哪种方法取决于你的具体需求。如果你只想在dialog关闭时执行某些操作,那么`OnCancelListener`可能更合适。而如果你需要在用户按下back键...
Android 利用dialog弹出 二级下拉列表 ExpandableListView+DialogLI。 利用dialog和ExpandableListView实现的一个弹出二级菜单项,并进行了封装,可在activity和fragment中随意调用。简单实用,兼容性好。 二级列表
各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果...
在Android开发中,底部弹出Dialog是一种常见的交互方式,它用于显示临时信息或者提供用户一些简短的操作选项。本文将详细讲解如何实现一个带有动画效果的底部弹出Dialog,并通过具体的代码实例进行演示。 首先,...
在Android开发中,有时我们需要创建一个弹出式对话框来与用户进行交互,但不同于常见的`Dialog`类,我们可以利用`Activity`来实现这一功能。这种方式适用于需要更复杂交互或者自定义布局的情况。本文将详细讲解如何...
本文将深入探讨如何完美实现将Activity作为Dialog弹窗进行弹出,并且兼顾到既能作为Dialog,也能作为普通Activity正常使用的情况。 首先,我们需要在AndroidManifest.xml中对目标Activity进行配置。添加`android:...
本文将详细介绍如何实现一个全屏弹出的Dialog,并且重点讨论如何实现底部弹入和底部弹出的效果,以及如何处理Dialog与输入法的交互。这个功能在很多应用场景中都非常有用,比如在登录、注册或者评论等场景,用户可能...
本篇文章将详细探讨如何实现Android Dialog的显示位置控制、弹出效果定制、返回键处理以及外部点击事件的管理。 首先,让我们关注Dialog的显示位置。在Android中,Dialog通常会居中显示,但有时我们可能需要自定义...
android:name=".DialogActivity" android:theme="@style/Theme.AppCompat.Dialog"> </activity> ``` 接下来,我们来创建`DialogActivity`。在`DialogActivity`的布局文件中,应保持简洁,避免使用太大的视图元素...
在Android开发中 我们经常会需要在Android界面上弹出一些对话框 比如询问用户或者让用户选择 关于Android Dialog的使用方法 已经有很多blog做出了详细的介绍(比如博客:7种形式的Android Dialog使用举例) 但是只是...
此外,如果你希望这个搜索Dialog在点击某个按钮或者触发特定事件时出现,而不是在Activity启动时立即显示,可以在适当的地方调用`showDialog(DIALOG_SEARCH)`方法,其中`DIALOG_SEARCH`是你在`onCreateDialog()`中...
本文将深入探讨如何实现“Android开发启动app弹出一张广告图片,Dialog可以查看大图,查看某个图片功能”。这个过程涉及到多个关键知识点,包括自定义Dialog、图片加载库的使用以及图片查看器的实现。 首先,我们要...
android:name=".DialogActivity" android:theme="@style/Theme.AppCompat.Light.Dialog"> </activity> ``` 接下来,你需要在`DialogActivity`的布局文件中设计对话框的界面。布局通常包含简单的元素,如TextView...
本示例“android-dialog弹出框,弹出gridview条目选中”是一个实现自定义Dialog并集成GridView来展示可选条目的实践案例。下面我们将深入探讨这一主题。 首先,`Dialog`是Android提供的一个类,用于显示一个浮动...
在Android开发中,创建一个能够弹出Dialog并提供调用相册、相机以及截图功能的类是一项常见的需求。这样的功能可以极大地提升用户交互体验,让用户能够方便快捷地选择图片资源或者进行屏幕截图。以下我们将详细探讨...
本文将详细介绍如何解决Android弹出Dialog后无法捕捉Back键的问题。 首先,我们需要理解问题出现的原因。当一个Dialog被显示时,它会获取到当前Activity的焦点,这意味着系统会将输入事件(如按键事件)优先传递给...
在Android开发中,Dialog是一种常见的用户交互元素,用于在用户界面中显示临时信息或进行简单的交互操作。通常,当我们使用AlertDialog构建一个对话框时,它的默认行为是在用户点击按钮(如"确定"或"取消")后自动...