【发布时间】:2016-04-08 08:11:50
【问题描述】:
伙计们!我无法使用 android-webview 加载 html 页面。我需要使用我的 webview 加载 url,而不是使用移动系统浏览器或其他浏览器,所以我必须将方法 setWebViewClient() 应用于我的 webview 但不是 WebChromeClient()。但是,当应用 setWebViewClient() 时,除了空白页面什么都没有加载,并且与后面的方法一起工作正常。不知道哪里出了问题,代码如下:
.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));
}
});
*/
【问题讨论】:
-
不应该 webView.loadUrl(loadUrl);在你设置 webviewclient 之后?
-
另外,如果你想让你的
WebView加载页面,你应该从shouldOverrideUrlLoading()中删除return false;,并删除view.loadUrl(url);。 -
好吧,@Mike M.!没错,它应该 return false 到方法 shouldOverrideUrlLoading()。非常感谢,也感谢 Smashing 和 IntelliJ Amiya。而且,我想知道如何在加载页面时定义一个方法来显示进度更改,例如 setWebChromeClient() 中的方法 onProgressChanged i> ?
-
好吧,伙计们!我对这两个 client-method 有误解,我想知道 webView 只能应用一个他们,但我错了! setWebChromClient 方法是使 webView 可用于某些 javascript 交互的支持方法!再次感谢@Mike M.!谢谢!