Android Activity返回键控制的两种方式

Android Activity返回键监听的两种方式

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 或者return true 都不会走onBackPressed了
        return false;
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyCode.KEYCODE_BACK)
                return super.onKeyDown(keyCode, event);  // 不拦截,如果这里拦截了,也不会走到onBackPressed方法了
        return false;
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

MySQL里sysdate和now

昨天在做一个SQL优化的时候,注意到一个细节问题,那就是使用sysdate后无法启用索引,感觉是走了全表扫描,但是使用now()就能秒出数据。对于这个问题,我看...

1023
来自专栏debugeeker的专栏

adobe flash player升级coredump分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xuzhina/article/detai...

461
来自专栏吴伟祥

Spring4 @Configuration源码

542
来自专栏java达人

Quartz作业调度框架

Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为...

2015
来自专栏步履前行

Java8 LocalDate

3.一般用法 //当前时间 yyyy-MM-dd LocalDate now = LocalDate.now(); //根据制定的年月日生成LocalDate...

762
来自专栏Android 研究

Android插件化基础2----理解Context

为了让大家在后面更好的理解插件化的内容,我们本篇文章围绕Context(基于Android API 24)进行讲解,主要内容如下:

1003
来自专栏程序员宝库

Java 8 时间 API 快速入门

Java 8 出来很久了,各位也可能已经在用了,不过其中新的时间日期 API 可能很少人用,甚至不知道怎么上手。本文快速介绍一下其中的主要的类的概念和用法。 一...

2695
来自专栏数据结构与算法

32:日历问题

32:日历问题 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB描述 在我们现在使用的日历中, 闰年被定义为能被4整除的年份,但...

3217
来自专栏吾爱乐享

java之学习calendar类的概述和方法案例教程

1004
来自专栏技术总结

iOS进阶之runtime作用

2159

扫码关注云+社区