Android中Fragment裝載WebView 返回鍵設定問題
阿新 • • 發佈:2019-02-18
1. Fragment使用方便快捷,尤其適合在一個Activity中需要切換多個頁面的時候使用
2. 最近在使用Fragment + WebView做小Demo的時候,發現只要在首頁Activity的Fragment中載入WebView頁面的時候,按返回鍵的總是直接退出整個App,查閱資料發現是Cordova對WebView的返回鍵做了處理,導致Activity中無法正常使用onBackPressed()函式來監聽返回鍵事件
3. 多方查閱資料發現,可以使用onKeyDown()函式來監聽返回按鍵,但是對於Fragment + WebView 仍然沒有效果
4. 繼續查閱資料,發現可以把監聽事件寫到Fragment中,重寫onResum() 方法可以很好的解決這個問題,同時也可以設定WebView的前進和回退,參考程式碼如下:
5. Fragment裝載WebView的坑好像比較多,正在一個接一個的踩...@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 (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK){ if( System.currentTimeMillis() - mLastPressBackTime< INTERVAL_OF_TWO_CLICK_TO_QUIT){ ((MainActivity)getActivity()).exitAppDirect(); }else{ Utils.showToast(getActivity(),"再按一次退出程式"); mLastPressBackTime = System.currentTimeMillis(); } } return true; } }); }