2013-01-20 83 views
1

當一個頁面加載時,我會顯示進度對話框,並在頁面加載完成時關閉它。之後,如果在向下滾動時出現加載的圖片,將會顯示「」進度對話框,但在加載圖片後不會消失。我該如何解決這個問題?WebView進度對話框不會消除

這是我的代碼,使用它,你將確切地知道我的意思。如果您能提供幫助,我將不勝感激。

import android.app.Activity; 
import android.app.ProgressDialog; 
import android.os.Bundle; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class MainActivity extends Activity { 

    // Declaring 
    WebView browser; 
    ProgressDialog pd; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     // Initializing 
     browser = (WebView) findViewById(R.id.webView1); 

     browser.getSettings().setJavaScriptEnabled(true); 
     browser.getSettings().setLoadWithOverviewMode(true); 
     browser.getSettings().setUseWideViewPort(true); 
     browser.getSettings().setBuiltInZoomControls(true); 

     // Loading 
     browser.loadUrl("http://www.tumblr.com/tagged/cool%20pictures"); 

     // Progress Dialog 
     pd = ProgressDialog.show(MainActivity.this, "", 
       "Loading. Please wait...", true); 

     browser.setWebViewClient(new WebViewClient() { 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       try { 
        view.loadUrl(url); 
       } catch (Exception e) { 
        e.printStackTrace(); 

       } 
       return true; 
      } 

      public void onLoadResource(WebView view, String url) { 
       try { 

        if (pd.isShowing() == false) { 
         pd = ProgressDialog.show(MainActivity.this, "", 
           "Loading. Please wait...", true); 
        }   

       } catch (Exception e) { 
        e.printStackTrace(); 

       } 
      } 

      public void onPageFinished(WebView view, String url) { 
       if (pd.isShowing()) { 
        pd.dismiss(); 

       } 

      } 

     }); 

    } 

} 
+0

因爲我發佈了這個問題,我正在尋找解決方案。有人找到任何東西嗎? – Ammar

+0

謝謝。您應該在「編輯」中發佈解決方案作爲答案並將其標記爲答案。它爲我工作。 –

+1

我現在只是做了,很高興你發現答案有幫助。 – Ammar

回答

1

經過3個小時的搜索,我找到了解決方案。而不是顯示ProgressDialog內的onLoadResource方法,我用onPageStarted方法。所以我的代碼看起來像這樣。

import android.graphics.Bitmap; 


public void onPageStarted(WebView view, String url, Bitmap favicon) { 

      if (pd.isShowing() == false) { 
       pd = ProgressDialog.show(MainActivity.this, "", 
         "Loading. Please wait...", true); 

      } 
     }