在Android開發中我們常常會遇到需要攔截或屏蔽返回鍵的需求,對攔截后的返回鍵進行特殊操作。
監聽返回鍵有兩種方式
1、重寫OnBackPressed方法
@Overridepublic 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方法
@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if(keyCode == KeyEvent.KEYCODE_BACK){return true;}return super.onKeyDown(keyCode, event);}@Overridepublic 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方法。