Android 攔截或屏蔽返回鍵

在Android開發中我們常常會遇到需要攔截或屏蔽返回鍵的需求,對攔截後的返回鍵進行特殊操作。

監聽返回鍵有兩種方式

1、重寫OnBackPressed方法

@Override
    public void onBackPressed() {
        // 完全由自己控制返回鍵邏輯,系統不再控制,但是有個前提是:
        // 不要在Activity的onKeyDown或者OnKeyUp中攔截掉返回鍵

        // 攔截:就是在OnKeyDown或者OnKeyUp中自己處理了返回鍵
        //(這裏處理之後return true.或者return false都會導致onBackPressed不會執行)

        // 不攔截:在OnKeyDown和OnKeyUp中返回super對應的方法
        //(如果兩個方法都被覆寫就分別都要返回super.onKeyDown,super.onKeyUp)
        super.onBackPressed();
    }

說明:

  • 在onBackPressed中完全由自己控制返回鍵邏輯,那麼就不要在onKeyDown或onKeyUp中攔截返回鍵;

  • 如果在onKeyDown或onKeyUp中處理了返回鍵,不管處理之後return true還是return false,都會導致onBackPressed不執行;

  • 如果要在onKeyDown或onKeyUp中處理返回鍵,但是還想讓onBackPressed執行,那麼在onKeyDown或onKeyUp中分別返回super.onKeyDown或super.onKeyUp方法。

2、重寫onKeyDown或onKeyUp方法

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode == KeyEvent.KEYCODE_BACK){
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        if(keyCode == KeyEvent.KEYCODE_BACK){
            return true;
        }
        return super.onKeyUp(keyCode, event);
    }

注:在onKeyDown或onKeyUp中無論return true或return false,都會禁用掉返回鍵(返回鍵失效),如果只想攔截而不禁用掉,那麼需要retrun super.onKeyDonw或return super.onKeyUp方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章