@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// 按下的如果是BACK,同时没有重复
if(keyCode==KeyEvent.KEYCODE_BACK && event.getRepeatCount()==0){
AlertDialog.Builder builder = new Builder(this);
builder.setMessage("您确定要退出?");
builder.setTitle("提示");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which){
dialog.dismiss();
Activity01.this.finish();
}
});
builder.setNegativeButton("取消",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which){
dialog.dismiss(); //取消对话框
}
});
AlertDialog alertDialog = builder.create();
//设置这个对话框不能被用户按[返回键]而取消掉,但测试发现如果用户按了KeyEvent.KEYCODE_SEARCH,对话框还是会Dismiss掉
alertDialog.setCancelable(false);
//由于设置alertDialog.setCancelable(false); 发现如果用户按了KeyEvent.KEYCODE_SEARCH,对话框还是会Dismiss掉,这里的setOnKeyListener作用就是屏蔽用户按下KeyEvent.KEYCODE_SEARCH
alertDialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode,
KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_SEARCH) {
return true;
} else {
return false; // 默认返回 false
}
}
});
alertDialog.show();
}
return super.onKeyDown(keyCode, event);
}
分享到:
相关推荐
在Android中,Activity的onKeyDown()方法可以捕获硬件按键的按下事件,包括返回键。因此,我们需要重写这个方法,检查Keycode.KEYCODE_BACK(返回键的代码)并处理对应的逻辑。 ```java @Override public boolean ...
在Android系统中,Home键、菜单键(在某些设备上是多任务键)和返回键是用户界面的重要组成部分,它们提供了导航和操作的基本方式。然而,在特定的应用场景下,如开发特殊应用或游戏时,开发者可能需要屏蔽这些系统...
在Android应用开发中,通常我们希望用户在按下返回键时能够退出应用程序,但为了提供更好的用户体验,Android系统并不推荐直接在用户第一次点击返回键时就退出。为了实现“再按一次返回键退出应用程序”的功能,我们...
Android设备通常配备多个物理按键,包括返回键,这对于应用的导航至关重要。然而,在某些场景下,开发者可能希望禁用或自定义这些行为,例如在游戏或全屏模式下。 首先,让我们理解Android系统如何处理物理按键事件...
在安卓(Android)系统中,开发应用程序时,处理返回键以退出程序是常见的需求。本文将详细介绍两种在Android源码中实现此功能的方法,并提供相关的编程实践指导。 方法一:重写onBackPressed()方法 在Android应用...
在开发android应用时,常常通过按返回键(即keyCode == KeyEvent.KEYCODE_BACK)就能关闭程序,其实大多情况下并没有关闭改应用 我们可以这样做,当用户点击自定义的退出按钮或返回键时(需要捕获动作),我们在...
if (keyCode == KeyEvent.KEYCODE_BACK) { // 检查是否为返回键 if (exitTime != 0 && System.currentTimeMillis() - exitTime ) { // 如果上一次点击在2秒内 finish(); // 直接结束Activity return true; } ...
【Android高级应用源码-捕获Home键】 在Android系统中,Home键是用户返回桌面的主要途径,通常情况下,按下Home键会结束当前应用程序并回到主屏幕。然而,在某些特定场景下,开发者可能需要捕获并处理Home键事件,...
在Android中,还有一些特殊的按键事件,如BACK键、HOME键、MENU键等。这些系统级的按键处理需要特别注意,因为它们涉及到应用的导航和退出逻辑。例如,处理BACK键通常是为了防止用户意外退出应用: ```java @...
尽管Fragment没有直接的`onBackPressed()`方法,但可以通过监听`onOptionsItemSelected()`中的`android.R.id.home`来模拟BACK键行为: ```java @Override public boolean onOptionsItemSelected(MenuItem item) { ...
1. **监听返回键事件**:在Activity中重写`onKeyDown()`方法,捕获到用户按下返回键的动作。这个方法会在硬件返回键被按下时调用。 ```java @Override public boolean onKeyDown(int keyCode, KeyEvent event) { ...
这是因为背景的设置使得`PopupWindow`能够捕获触摸事件和处理返回键事件,从而实现自动消失的功能。在实际开发中,确保正确设置`PopupWindow`的背景是一个常见的最佳实践,以避免不必要的困扰。
为了监听返回键,我们可以在Activity的onKeyDown()方法中捕获BACK_KEY事件: ```java @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { // 可以...
例如,`KeyEvent.KEYCODE_ENTER` 表示回车键,`KeyEvent.KEYCODE_BACK` 表示返回键。你可以通过比较 `keyCode` 来识别特定的按键。 4. **BroadcastReceiver** 对于系统级的按键事件,比如电源键或者音量键,可以...
在做安卓应用是我们经常要判断用户对返回键的操作,一般为了防止误操作都是在用户连续按下两次返回键的时候提示用户是否退出应用程序。 第一种实现的基本原理就是,当按下BACK键时,会被onKeyDown捕获,判断是BACK键...
此外,文章还提及了一些相关的技术,如`LinearLayoutManager`的一键返回顶部示例,双击返回键退出应用,Unity中捕获Android返回事件等,这些都是Android开发中常见的需求,可以通过类似的方法进行实现。
if (keyCode == KeyEvent.KEYCODE_BACK) { // 检查是否为返回键 // 自定义返回键的行为 // ... return true; // 返回true表示已处理此事件,系统不再进行默认处理 } return super.onKeyDown(keyCode, event); ...
`keyCode`是表示按键的整数值,例如,`KeyEvent.KEYCODE_ENTER`表示回车键,`KeyEvent.KEYCODE_BACK`表示返回键。开发者可以根据`keyCode`判断用户按下了哪个键。 `KeyEvent`对象还提供了其他方法,比如`getKeyCode...
在Android开发中,用户通常通过Back键来返回上一界面或退出应用。然而,有时开发者希望用户在连续点击两次Back键后才真正退出应用,以防止意外退出。本篇文章将详细解析这一功能的实现方法。 首先,我们来看第一种...