首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在加载下一个WebView之前清除上一个WebView的内容?

如何在加载下一个WebView之前清除上一个WebView的内容?
EN

Stack Overflow用户
提问于 2012-01-20 17:56:01
回答 6查看 34.7K关注 0票数 27

我的场景是,一开始我加载一个WebView,然后我用不同的WebView加载相同的URL。

我的问题是,每当我加载下一个URL时,我都可以看到之前加载的URL内容,然后我当前加载的URL内容就会显示出来。

每当我加载不同的URL时,我都想清除内容。

说,

代码语言:javascript
复制
if (pos == 0) {
    mweb.clearCache(true);
    mweb.clearHistory();
    mweb.loadUrl("http://stackoverflow.com/");
}
else if (pos == 1) {
    mweb.clearCache(true);
    mweb.clearHistory();
    mweb.loadUrl("http://android.stackexchange.com/");
}

clearCache()clearHistory()都不适用于我。

EN

回答 6

Stack Overflow用户

发布于 2015-08-06 16:27:35

我通常在加载新的url之前隐藏webview,然后在加载进度稍有进展时再显示它。

代码语言:javascript
复制
// url loading
mWebView.setVisibility(View.INVISIBLE);
mWebView.loadUrl(newUrl);

// show webview again
mWebView.setWebChromeClient(new WebChromeClient() {
    @Override
    public void onProgressChanged(WebView view, int progress) {
        if (progress >= 10) {
            mWebView.setVisibility(View.VISIBLE);
        }
    }
}
票数 4
EN

Stack Overflow用户

发布于 2018-02-16 22:40:13

我想你可以使用Webview.clearHistory()。但请记住,在加载WebView之后调用它是如此无能为力。例如代码:

代码语言:javascript
复制
webView.loadData(someUrl);
webView.clearHistory();

无法工作,因为未加载webView。我们必须像这样清理它:

代码语言:javascript
复制
webView.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                clearHistory();
            }
}
票数 4
EN

Stack Overflow用户

发布于 2014-08-23 01:42:28

Thnx to StefanK comment found Here,您需要在页面完成加载时使用clearHistory()方法,WebViewClient onPageFinished(WebView view, String url)方法也在onLoadResource(WebView view, String url)方法中;如下所示:

代码语言:javascript
复制
    myCoolWebView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url){
            view.loadUrl(url);
            return true;
        }
        @Override
        public void onLoadResource(WebView view, String url) {
            // Notice Here.
            view.clearHistory();
            super.onLoadResource(view, url);
        }
        @Override
        public void onPageFinished(WebView view, String url) {
            // And Here.
            view.clearHistory();
            super.onPageFinished(view,url);
        }
    });

您还可以检查canGoBack()copyBackForwardList()中的操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8939530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档