2011-12-30 36 views
1

我有使用進度條對話框的Webview應用程序。它工作正常,但問題是,我顯示的URL是用戶必須輸入一些信息的基本形式。如何在WebView中激活進度條一次

每當用戶點擊一個按鈕來執行一些操作時,進度條就會加載。此應用中的進度條和網頁中的加載消息相互重疊。你可以看到他們在第二頁和第三頁同時出現。

如何讓我的應用程序中的進度條僅運行一次,這將在第一頁加載時進行。這裏是我的活動:

 public class Webform extends Activity { 

private WebView webview; 
private ProgressDialog progressDialog; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.webform); 
    webview = (WebView) findViewById(R.id.webview); 

    final Activity activity = this; 

    webview.loadUrl("http://www.ccsuhealth.mobi"); 
    webview.getSettings().setJavaScriptEnabled(true); 
    webview.setWebViewClient(new WebViewClient() { 
     public boolean shouldOverrideUrlLoading(WebView view, String url) {    
      view.loadUrl(url); 
      return true; 
     } 


     public void onLoadResource (WebView view, String url) { 
      if (progressDialog == null) { 
       progressDialog = new ProgressDialog(activity); 
       progressDialog.setMessage("Loading... "); 
       progressDialog.show(); 
      } 
     } 

     public void onPageFinished(WebView view, String url) { 
      if (progressDialog.isShowing()) { 
       progressDialog.dismiss(); 
       progressDialog = null; 
       progressDialog.cancel(); 
      } 
     } 


     public void onReceivedError(WebView view, int errorCode, 
       String description, String failingUrl) { 
      Toast.makeText(Webform.this, "Your Internet Connection May not be active Or " + description , Toast.LENGTH_LONG).show(); 
     } 


    }); 

} 

回答

1

如果我理解正確的話,你要顯示僅在第一頁(登錄頁)上的進度條,但不是在後續頁面。這裏是如何做到這一點:

  1. 落實onPageStated事件,並在那裏激活進度條 - 但前提是URL您想要的登錄頁面URL匹配。
    http://developer.android.com/reference/android/webkit/WebViewClient.html#onPageStarted(android.webkit.WebView,java.lang.String中,android.graphics.Bitmap)

  2. 落實WebChromeClient.onProgressChange事件。在onProgressChange中設置進度條的進度 - 但只有在進度條可見的情況下。

    http://developer.android.com/reference/android/webkit/WebChromeClient.html#onProgressChanged(android.webkit.WebView,INT)

  3. 落實onPageFinished事件和隱藏進度條在那裏。

    http://developer.android.com/reference/android/webkit/WebViewClient.html#onPageFinished(android.webkit.WebView,java.lang.String中)

+0

西奧,我沒有得到第2步中我已經設置mywebview實施webchromeClient.onprogresschange,但在這之後我迷路了。 – Yahyaotaif 2011-12-31 01:53:43

+0

對於第2步,請使用:webView.setWebChromeClient(myWebChromeClient),其中myWebChromeClient是您的實現。或者,您可以使用webView.setWebChromeClient(新的WebChromeClient(){@Override ...})執行此操作。 – Theo 2011-12-31 03:13:53