2010-07-05 41 views
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); 
     } 
    } 
} 

感謝

回答

2

不知道這是可能的WebChromeClient,但我能做到這一點使用

WebViewClient和重載onLoadResourceonReceivedErroronPageFinished

這就是我所做的

onLoadResource  
mwebview.setVisibility(View.GONE); 


onReceivedError 
mwebview.setVisibility(View.VISIBLE); 

onPageFinished 
mwebview.setVisibility(View.VISIBLE); 

和intially在XML作爲GONE

android:visibility="gone" 

我也用它來Facebook和正常工作的web視圖設置。

+0

感謝您的回覆。 我試過了,但是當我隱藏啓動畫面時,webview保持空白三到四秒直到頁面呈現。這是我想修復,我不知道如何避免這種情況。 我用我使用的代碼編輯了我的問題。 – Adrian 2010-07-05 13:26:31

+0

我更新了我的草稿代碼。請注意,一些url覆蓋方法也被稱爲其他元素,如圖像,CSS。 – Pentium10 2010-07-05 13:47:37

+0

您給我的解決方案雖然存在一些閃爍,但由於存在一些頁面重定向,並且onPageFinished被調用了兩次或三次,因此顯示了webview,但OnLoadResource再次隱藏,直到加載最後一頁。正如我所說,解決方案工作得很好,但我想解決這個問題。 謝謝大家。 – Adrian 2010-07-06 10:36:41