現在的開發我們基本上都是一個主activity中放多個fragment,點擊返回按鈕的時候,直接退出主activity,但是我們在fragment中經常會彈出例如popupWindow這樣的布局,用戶一般點擊返回按鈕的時候是想讓彈窗消失,而不是退出應用。如果你直接退出應用這樣的用戶體驗就非常的不好,所以我們就需要在fragment中監聽按鈕的點擊事件,做出對應的處理。
比較常見的場景:
在一個Fragment中按下返回鍵,先判斷下PopupWindow是否顯示,若顯示,隱藏PopupWindow,否則,執行系統的返回事件。
代碼示例
@Override public void onResume() { super.onResume(); getView().setFocusableInTouchMode(true); getView().requestFocus(); getView().setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) { if (popupWindow != null && popupWindow.isShowing()) { popupWindow.dismiss(); return true;//當fragment消費了點擊事件后,返回true,activity中的點擊事件就不會執行了 } } return false;//當fragmenet沒有消費點擊事件,返回false,activity中繼續執行對應的邏輯 } }); }
說明
其中的getView()是獲取fragment所在的activity對象,這樣就可以實現監聽手機按鈕點擊事件了