1. 程式人生 > >Android中Fragment裝載WebView 返回鍵設定問題

Android中Fragment裝載WebView 返回鍵設定問題

1. Fragment使用方便快捷,尤其適合在一個Activity中需要切換多個頁面的時候使用

2. 最近在使用Fragment + WebView做小Demo的時候,發現只要在首頁Activity的Fragment中載入WebView頁面的時候,按返回鍵的總是直接退出整個App,查閱資料發現是Cordova對WebView的返回鍵做了處理,導致Activity中無法正常使用onBackPressed()函式來監聽返回鍵事件

3. 多方查閱資料發現,可以使用onKeyDown()函式來監聽返回按鍵,但是對於Fragment + WebView 仍然沒有效果

4. 繼續查閱資料,發現可以把監聽事件寫到Fragment中,重寫onResum() 方法可以很好的解決這個問題,同時也可以設定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;  
            }  
        });  
    }  
5. Fragment裝載WebView的坑好像比較多,正在一個接一個的踩...