goBack()的方法在Android WebView中不起作用

时间:2017-04-13 01:58:12

标签: android webview

在我的包含WebView的活动中,我重写了onBackPressed()方法,这是我的代码。

@Override
public void onBackPressed() {

    if(mWebView.canGoBack()){
        Log.d("DEBUG","canGoBack");
        mWebView.goBack();
        return;
    }
    super.onBackPressed();
}  

字符串" canGoBack"如果有历史页面,则打印,但活动没有变化。这是我在onCreate()方法中调用的初始化WebView代码。

private void initWebViewSettings() {
    mWebView.setWebViewClient(new MyWebViewClient());
    WebSettings webSettings = mWebView.getSettings();
    webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE); //no cache
    webSettings.setJavaScriptEnabled(true);
    webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
    mWebView.addJavascriptInterface(new WebAppInterface(this), "Android");
}  

这是我的onResume()方法,我调用了loadUrl()。

@Override
protected void onResume() {
    super.onResume();
    mShopId = getIntent().getIntExtra(App.SHOP_ID,-1);
    if(mShopId != -1){
        mWebView.loadUrl(App.SHOP_URL + mShopId + App.INDEX);
    }
}  

2 个答案:

答案 0 :(得分:0)

这是我解决这个问题的方法。我为许多webview项目做了同样的事情

webView.setOnKeyListener(new OnKeyListener()
{
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event)
    {
        if(event.getAction() == KeyEvent.ACTION_DOWN)
        {
            WebView webView = (WebView) v;

            switch(keyCode)
            {
                case KeyEvent.KEYCODE_BACK:
                    if(webView.canGoBack())
                    {
                        webView.goBack();
                        return true;
                    }
                    break;
            }
        }

        return false;
    }
});

答案 1 :(得分:0)

尝试我的解决方案,按下按键

返回旧链接
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == event.KEYCODE_BACK && webView.canGoBack()){

        webView.goBack();
        return false;
    }
    return super.onKeyDown(keyCode, event);