WebView goback()方法不起作用

时间:2017-07-25 07:27:35

标签: android

我的应用需要在webview中呈现多个网页,并提供goback()方法。

但遗憾的是goback()方法在我们加载url(来自多个页面的url之一)没有退出(网页不可用)的情况下不起作用然后我们尝试调用{{ 1}}

2 个答案:

答案 0 :(得分:1)

您似乎只是在下面尝试简单的代码使代码复杂化

#include "boost/property_tree/ptree.hpp"
#include "boost/property_tree/json_parser.hpp"
#include "boost/foreach.hpp"


void traverse(boost::property_tree::ptree pt){
    using boost::property_tree::ptree;

    for (ptree::value_type &v : pt)
    {
        std::cout<<v.first<<" - "<<v.second.data()<<std::endl;


        if (v.second.size() >= 1){
            traverse(v.second);
        }
    }
}

这是简单的代码,对你来说很好,我不知道你是否因为其他原因使用了旗帜。

答案 1 :(得分:0)

你可以这样做。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {
        webView.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

如果您的网页不可用,则可以使用onReceivedError方法。

        webView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }

        @TargetApi(Build.VERSION_CODES.M)
        @Override
        public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
            super.onReceivedError(view, request, error);

            if (request.isForMainFrame()) {
                //  you can do something when you Web page not available
                //  webView.goBack();
            }

        }
    });