2012-03-13 40 views
3

我想在我的webview應用程序中實現一個加載對話框,但無論我做什麼,只是不會工作。Android的webview加載對話框

我要的是下面的,每次有人點擊了裝載有對話框彈出這樣的網頁視圖鏈接:

loading dialog

當加載完成後它消失。任何人都可以告訴我如何在自己的源代碼中完成它?我嘗試了很多東西,但總是有一個問題,所以我真的不知道該怎麼做。

這是我WebviewActivity:

import android.content.res.Configuration; 
import android.os.Bundle; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.Window; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class WebviewActivity extends MainActivity { 

    private WebView myWebView; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.main); 

     myWebView = (WebView)findViewById(R.id.webview);   
     WebSettings webSettings = myWebView.getSettings(); 
     webSettings.setJavaScriptEnabled(true);   
     myWebView.setWebViewClient(new WebViewClient()); 

     myWebView.requestFocus(View.FOCUS_DOWN); 
     myWebView.setOnTouchListener(new View.OnTouchListener() { 
      public boolean onTouch(View v, MotionEvent event) { 
       switch (event.getAction()) { 
        case MotionEvent.ACTION_DOWN: 
        case MotionEvent.ACTION_UP: 
         if (!v.hasFocus()) { 
          v.requestFocus(); 
         } 
         break; 
       } 
       return false; 
      } 
     }); 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     if (isOnline() == true) 
      myWebView.loadUrl(webLink); 
     else if (isOnline() == false) 
      showNoConnectionDialog(); 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig){   
     super.onConfigurationChanged(newConfig); 
    } 
} 

非常感謝您的幫助!

+0

使用異步任務這個......不要做自定義進度對話框。請參閱此鏈接http://as400samplecode.blogspot.in/2011/09/android-asynctask-httpclient-with.html – Aerrow 2012-03-13 14:40:26

+0

好吧,但我不是真的那樣,所以我不知道如何能夠實現這一點.. 。 – MartijnG 2012-03-13 15:42:07

回答

2

這是我的最終解決方案:

myWebView.setWebViewClient(new WebViewClient(){ 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      progressDialog.show(); 
      view.loadUrl(url); 
      return true;     
     } 
     @Override 
     public void onPageFinished(WebView view, final String url) { 
      progressDialog.dismiss(); 
     } 
    }); 
5

你必須重寫這樣的WebViewClient,

 webview.setWebViewClient(new WebViewClient(){ 

      @Override 
      public void onPageFinished(WebView view, final String url) { 

       progressDialog.cancel(); 


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

       progressDialog.show(); 
      } 
     }); 

webview.loadUrl(TwitterUrl); 
0

這有可能與WebChromeClient。它爲我工作。

代碼片段:

progressDialog.show(); // Add before page load 
webView.setWebChromeClient(new HelpWebChromeClient()); 
private class HelpWebChromeClient extends WebChromeClient { 
    @Override 
    public void onProgressChanged(WebView view, int newProgress) { 
    if(newProgress == 100) 
     progressDialog.dismiss(); 
    } 
}