1. 程式人生 > >Android-完美解決在Activity中觸控返回鍵onBackPressed不能觸發問題

Android-完美解決在Activity中觸控返回鍵onBackPressed不能觸發問題

場景:在一個只有WebView元件的Activity中如何正確處理頁面的返回?

之前思路是覆寫Activity的onBackPressed方法,因為使用者觸控“返回鍵“會觸發該方法;後來發現在三星,OPPO等機型手機上該方法並不執行,也就說該方法並不可取。

解決方法:通過覆寫dispatchKeyEvent方法,從該方法中攔截返回鍵,再做處理,這種方法測試後感覺相容性不錯。

程式碼如下:

public class WebViewDemoActivity extends Activity {

    private WebView mWebview;
    @Override
    protected
void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); mWebview = (WebView)findViewById(R.id.layout_webview); //init webview param } @Override public boolean dispatchKeyEvent(KeyEvent event) { //攔截返回鍵 if (event.getKeyCode() == KeyEvent.KEYCODE_BACK){ //判斷觸控UP事件才會進行返回事件處理
if (event.getAction() == KeyEvent.ACTION_UP) { onBackPressed(); } //只要是返回事件,直接返回true,表示消費掉 return true; } return super.dispatchKeyEvent(event); } @Override public void onBackPressed() { if (mWebview != null
) { //如果h5頁面可能返回,跳轉到上個頁面 if (mWebview.canGoBack()) { mWebview.goBack(); } else { //不能返回上個頁面,直接finish當前Activity finish(); } } else { finish(); } } }