3
我有一個Webview的問題。我正在編寫我自己的WebChromeClient類,覆蓋onProgressChanged方法,因爲我想在加載完成後顯示頁面,然後隱藏啓動畫面。因爲我只是希望它發生在一個特定的url上,所以我將實際的WebView url與特定的字符串進行比較,但是存在一個問題,當調用webview.getUrl()方法並且我的應用程序完成時,我得到一個空指針。 這是代碼:WebView.getUrl()返回null
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);
}
}
}
感謝
感謝您的回覆。 我試過了,但是當我隱藏啓動畫面時,webview保持空白三到四秒直到頁面呈現。這是我想修復,我不知道如何避免這種情況。 我用我使用的代碼編輯了我的問題。 – Adrian 2010-07-05 13:26:31
我更新了我的草稿代碼。請注意,一些url覆蓋方法也被稱爲其他元素,如圖像,CSS。 – Pentium10 2010-07-05 13:47:37
您給我的解決方案雖然存在一些閃爍,但由於存在一些頁面重定向,並且onPageFinished被調用了兩次或三次,因此顯示了webview,但OnLoadResource再次隱藏,直到加載最後一頁。正如我所說,解決方案工作得很好,但我想解決這個問題。 謝謝大家。 – Adrian 2010-07-06 10:36:41