我对Webview有一个问题。我正在编写覆盖onProgressChanged方法的自己的WebChromeClient类,因为我想在页面加载完成后显示页面,然后隐藏闪屏。因为我只希望它发生在特定的URL上,所以我将实际的WebView URL与特定的字符串进行了比较,但是有一个问题,当webview.getUrl()方法被调用并且我的应用程序结束时,我得到一个空指针。
代码如下:
private class MyWebChromeClient extends WebChromeClient {
@Override
public void onProgressChanged (WebView webview, int newProgress) {
super.onProgressChanged(webview,newProgress);
if(webview.equals(w1) && newProgress == 100 && webview.getUrl().startsWith("https://ssl.facebook.com/login.php")) {
webview.setVisibility(WebView.VISIBLE);
ImageView imageview = (ImageView)findViewById(R.id.ivsplash);
imageview.setVisibility(ImageView.GONE);
ProgressBar progressbar = (ProgressBar)findViewById(R.id.pbsplash);
progressbar.setVisibility(ProgressBar.GONE);
}
}
}我这样做是为了避免webview需要三四秒钟来呈现页面,但它不起作用。我之前使用的代码是:
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView webview, String url) {
super.shouldOverrideUrlLoading(webview, url);
webview.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView webview, String url) {
if(url.startsWith("https://ssl.facebook.com/login.php")) {
webview.setVisibility(WebView.VISIBLE);
ImageView imageview = (ImageView)findViewById(R.id.ivsplash);
imageview.setVisibility(ImageView.GONE);
ProgressBar progressbar = (ProgressBar)findViewById(R.id.pbsplash);
progressbar.setVisibility(ProgressBar.GONE);
}
}
}发布于 2010-07-05 20:20:12
我不确定使用WebChromeClient是否可以做到这一点,但我可以使用
WebViewClient和重载onLoadResource、onReceivedError和onPageFinished
这就是我所做的
onLoadResource
mwebview.setVisibility(View.GONE);
onReceivedError
mwebview.setVisibility(View.VISIBLE);
onPageFinished
mwebview.setVisibility(View.VISIBLE);最初,在XML中,webview被设置为不存在。
android:visibility="gone"我也在Facebook上使用它,并且运行得很好。
https://stackoverflow.com/questions/3179212
复制相似问题