在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方法。