Android Activity返回键控制的两种方式
2016-02-15 20:02
549 查看
1.覆写Activity的OnBackPressed方法
官方解释:
Called when the activity has detected the user's press of the back key.
The default implementation simply finishes the current activity, but you can override this to do whatever you want.
@Override
public void onBackPressed() {
// 完全由自己控制返回键逻辑,系统不在控制,但是有个前提是不要在Activity的onKeyDown或者OnKeyUp中拦截掉返回键
// 拦截:就是在OnKeyDown或者OnKeyUp中自己处理了返回键(这里处理之后return true.或者return false都会导致onBackPressed不会执行)
// 不拦截:在OnKeyDown和OnKeyUp中返回super对应的方法(如果两个方法都被覆写就分别都要返回super.onKeyDown,super.onKeyUp)
}
2、覆写Activity的onKeyDown或者OnkeyUp,拦截返回键
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyCode.KEYCODE_BACK) {
return isCosumenBackKey();
}
return false;
}
private boolean isCosumenBackKey() {
// 这儿做返回键的控制,如果自己处理返回键逻辑就返回true,如果返回false,代表继续向下传递back事件,由系统取控制
return true;
}
举例:以下代码不会走到onBackPressed (在一个Activity中同时覆写下面三个方法)
@Override
public void onBackPressed() {
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyCode.KEYCODE_BACK)
return false;
return false;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyCode.KEYCODE_BACK)
return super.onKeyDown(keyCode, event);
return false;
}
官方解释:
Called when the activity has detected the user's press of the back key.
The default implementation simply finishes the current activity, but you can override this to do whatever you want.
@Override
public void onBackPressed() {
// 完全由自己控制返回键逻辑,系统不在控制,但是有个前提是不要在Activity的onKeyDown或者OnKeyUp中拦截掉返回键
// 拦截:就是在OnKeyDown或者OnKeyUp中自己处理了返回键(这里处理之后return true.或者return false都会导致onBackPressed不会执行)
// 不拦截:在OnKeyDown和OnKeyUp中返回super对应的方法(如果两个方法都被覆写就分别都要返回super.onKeyDown,super.onKeyUp)
}
2、覆写Activity的onKeyDown或者OnkeyUp,拦截返回键
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyCode.KEYCODE_BACK) {
return isCosumenBackKey();
}
return false;
}
private boolean isCosumenBackKey() {
// 这儿做返回键的控制,如果自己处理返回键逻辑就返回true,如果返回false,代表继续向下传递back事件,由系统取控制
return true;
}
举例:以下代码不会走到onBackPressed (在一个Activity中同时覆写下面三个方法)
@Override
public void onBackPressed() {
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyCode.KEYCODE_BACK)
return false;
return false;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyCode.KEYCODE_BACK)
return super.onKeyDown(keyCode, event);
return false;
}
相关文章推荐
- Android TextView 添加下划线的几种方式
- Android TextView 添加下划线的几种方式
- android gridview几个重要属性(android:listSelector自带内部padding分析)
- android gridview几个重要属性
- Android studio 编译报libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
- Android设计模式学习之观察者模式
- 关闭Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用 .
- Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能
- android mina 框架
- ANDROID_MARS学习笔记_S01原始版_011_XML
- Android Bundle类
- Android学习笔记(五):Activity和main.xml文件
- android视频合成相关整理
- android 拨打电话 源码 两种方式以及区别
- android run/debug configurations时报错Cannot reload AVD list:
- intellij idea运行Android程序时报错;Unable to locate adb within SDK
- Android Studio apk 打包流程
- Ionic开发Android环境搭建
- Android manifest中actvity下的android:allowTaskReparenting等配置
- 一个简单的Android小实例