在webview.goBack()上调用"shouldOverrideUrlLoading"方法

4
我正在webviewshouldOverrideUrlLoading方法中加载所有页面(主要是为了跟踪当前页面的URL并进行一些修改)。
我的问题是返回按钮(例如:webview.goback()方法)会绕过上述函数。
有没有办法显式调用goback()shouldOverrideUrlLoading()两个方法?
public boolean shouldOverrideUrlLoading(WebView view, String url){
//get current url and do some modifications to html}

public boolean onKeyDown(int keyCode, KeyEvent event) {
     if ((keyCode == KeyEvent.KEYCODE_BACK) && web1.canGoBack()) {
         webview.goBack();  
         return true;
      }
      return super.onKeyDown(keyCode, event);
}
1个回答

1

看起来你的代码中,一旦shouldOverrideUrlLoading方法基于某些特定的URL动作被调用,你需要使用Webview返回方法。我建议你在活动中使用以下方法:

@Override
public void onBackPressed() {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && web1.canGoBack()) {
        webview.goBack();
    } else {
        super.onBackPressed();
    }
}

这段代码与 onKeypressed 功能相同,只不过使用了 onBackPressed。但是需要将此代码写在 Activity 类中而非自定义的 WebViewClient 中。

在 shouldOverrideUrlLoading 中调用 onBackPressed()。尝试一下,应该可以正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接