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

相关文章

来自专栏上善若水

010android初级篇之Activity的返回值

使用startActivity方式启动的Activity和它的父Activity无关,当它关闭时也不会提供任何反馈。 但是使用startActivityFor...

1014
来自专栏james大数据架构

Activity间中使用Intent传值

主页面用来输入一个值传入第二个页面显示,关闭第二个页面返回一个值 主页布局: <RelativeLayout xmlns:android="http://sch...

17210
来自专栏Vamei实验室

安卓第八夜 玛丽莲梦露

上一讲说明了数据库中存取数据的方法。这一讲将以条目的视图方式,来以相似的视图方式,显示多个数据对象。这种方式特别适合于显示从数据库中取出的多个结构相似的数据,比...

1879
来自专栏开发之途

Android 解析RecyclerView(3)——以更简单的方法实现带顶部View和底部View的RecyclerView

1523
来自专栏项勇

笔记32 | UI系列之EditText和AutoCompleteTextView

1275
来自专栏pangguoming

Android 子activity关闭 向父activity传值

使用startActivity方式启动的Activity和它的父Activity无关,当它关闭时也不会提供任何反馈。 可变通的,你可以启动一个Activity作...

3315
来自专栏james大数据架构

进度条ProgressBar

拖动滑块改变图片透明度 1.布局 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/...

1765
来自专栏Android开发指南

2.抽取代码(BaseActivity)

3428
来自专栏潇涧技术专栏

Art of Android Development Reading Notes 8

《Android开发艺术探索》读书笔记 (8) 第8章 理解Window和WindowManager

691
来自专栏Android干货

Android项目实战(二):安卓应用程序退出的三种方法

2595

扫码关注云+社区