Android webview setWebViewClient() 什么都不显示 [英] Android webview setWebViewClient() show nothing

查看:35
本文介绍了Android webview setWebViewClient() 什么都不显示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

伙计们!我在使用 android-webview 加载 html 页面时遇到问题.我需要用我的 webview 加载 url,而不是移动系统浏览器或其他浏览器,所以我必须将方法 setWebViewClient() 应用到我的 webview 但不是 <强>WebChromeClient().但是,当应用 setWebViewClient() 时,除了空白页面外什么也没有加载,并且在后面的方法中工作正常.不知道哪里出了问题,代码如下:

guys! I have problem to load html page with android-webview. I need to load the url with my webview but not with the mobile system broswer or other broswer, so I have to apply the method setWebViewClient() to my webview but not WebChromeClient(). However, there's load nothing but blank page when applied the setWebViewClient(), and works fine with the later method. I don't know where's problem, here is the code:

.xml:

<WebView android:id="@+id/webview"
         android:layout_marginTop="50dp"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"/>

.java:

WebView webView = (WebView)findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);

if (Build.VERSION.SDK_INT >= 19) {
    webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
}

private String loadUrl = "http://www.baidu.com";
webView.loadUrl(loadUrl);

webView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
    @Override
    public void onLoadResource(WebView view, String url) {
        view.loadUrl(url);
        super.onLoadResource(view, url);
    }
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        view.loadUrl(url);
        super.onPageStarted(view, url, favicon);
    }
});

/*
webView.setWebChromeClient(new WebChromeClient() {
    @Override
    public void onProgressChanged(WebView view, int newProgress) {
        Log.v(Log_Tag, String.valueOf(newProgress));
    }
});
*/

推荐答案

再次感谢 @Mike M..如果您想使用 webView 加载 url 而不是使用移动系统默认浏览器或其他第三方浏览器.并且,如果您想用您的 webView 处理网页的一些 javascript 操作,建议您将 WebChromClient 应用到您的 webView.

Thanks @Mike M. again. The method shouldOverrideUrlLoading() should return false if you want to loading the url with your webView but not with the mobile system default browser or other Third-Party browsers. And, if you want to deal some javascript actions of the webpage with your webView, you're suggested to apply the WebChromClient to your webView.

这是一个很好的例子:

WebView webView = (WebView)findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);

//load the page with cache
if (Build.VERSION.SDK_INT >= 19) {
    webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
}


webView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        //return true load with system-default-browser or other browsers, false with your webView
        return false;
    }

    @Override
    public void onLoadResource(WebView view, String url) {
        super.onLoadResource(view, url);
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
    }
});

webView.setWebChromeClient(new WebChromeClient() {
    @Override
    public void onProgressChanged(WebView view, int newProgress) {
        Log.v(Log_Tag, String.valueOf(newProgress));
        //put your code here if your want to show the progress with progressbar
    }
});

private String loadUrl = "http://www.baidu.com";
webView.loadUrl(loadUrl);

这篇关于Android webview setWebViewClient() 什么都不显示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆