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 条评论
登录 后参与评论

相关文章

来自专栏Android相关

Android的NestedScroll机制

这种事件传递的结果就会导致以下问题: 一个View把Touch事件消费之后,其他View就无法接收到该事件,也就无法根据这个事件完成与用户的交互

943
来自专栏懒人开发

BottomNavigationView简单使用

之前见过类似这个库, 是带ripple效果的 不记得具体地址了,和这个类似 https://github.com/Ashok-Varma/BottomNav...

703
来自专栏Android干货园

Android中线程的使用

版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/47...

841
来自专栏蜉蝣禅修之道

自定义对话框绑定控件

922
来自专栏Android干货

Android项目实战(二十八):Zxing二维码实现及优化

3206
来自专栏分享达人秀

Activity初入门,创建和配置如此简单

Activity是Android应用的重要组成单元之一,也是Android应用最常见的组件之一。前面看到的示例通常都只包含一个Activity或一个Ap...

1895
来自专栏Android干货

acffo的开源项目汇总

1367
来自专栏Android干货

安卓开发_计时器(Chronometer)的简单使用

32511
来自专栏Android随笔

一个基础的Android项目

AndroidBasicProject是一个简易的Android基础项目,方便您快速进行开发。 包含以下内容:

692
来自专栏Android干货园

Android ListView性能优化,异步加载图片

版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/48...

1282

扫码关注云+社区