2011-09-15 6 views
1

私はAndroidレベル8 apiを使用して単一のウェブサイトを読み込む単純なアンドロイドアプリを開発しています。私はEclipseでJavaでコーディングしています。私はProgressDialogを表示することができました。ユーザーが、正常に動作しているアプリケーションのWebページ上のリンクをクリックしたときです。WebView初期ページのロードで進捗ダイアログを表示する必要があります

ただし、アプリが初めて読み込まれ、最初のウェブページが読み込まれるときの問題です。 Webページにはしばらく時間がかかり、最初のページが読み込まれて要素を表示し始めている間に、白い空白の画面が表示されます(プログラミングのためにAndroidエミュレータを使用)。この最初のページの読み込み中に同じProgressDialogインジケータを表示したいのですが、試行に失敗しました。

以下は私のコードです。

package com.TestWebView; 

import android.app.Activity; 
import android.app.ProgressDialog; 
import android.content.Context; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Handler; 
import android.os.Message; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 


public class TestWebView extends Activity { 


    /** Called when the activity is first created. */ 


    @Override 
public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 


     WebView engine = (WebView) findViewById(R.id.web_engine); 

     WebViewClient myWebClient = new WebViewClient() 
     { 
      ProgressDialog pd = null; 

      // Override page so it's load on my view only 
      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) 
      { 
       /*view.loadUrl(url); 
       return true;*/ 

       //start the progress dialog 
       pd = ProgressDialog.show(TestWebView.this, "", "Loading..."); 


       if (url.contains("maps.google.com") == true) 
       { 
        // Load new URL Don't override URL Link 
        Uri uri = Uri.parse(url); 
        Intent intent = new Intent(Intent.ACTION_VIEW, uri); 
        startActivity(intent); 
        return true; 
       } 
       return false; 
      } 

      @Override 
      public void onPageFinished(WebView view, String url){ 
       pdHandler p = new pdHandler(); 
       p.sendEmptyMessage(0); 
      } 

      class pdHandler extends Handler { 
       @Override 
       public void handleMessage(Message msg) { 
        if(pd != null) 
        { 
        pd.dismiss(); 
        pd = null; 
        } 
       } 
      } 

     }; 


     engine.getSettings().setJavaScriptEnabled(true); 
     engine.getSettings().setSupportZoom(true); 
     engine.getSettings().setBuiltInZoomControls(true); 
     engine.setWebViewClient(myWebClient); 
     engine.loadUrl("http://www.amazon.com/gp/aw/h.html"); 

    } 


} 

ご了承ください。

ありがとうございます。

答えて

2
final ProgressDialog pd = ProgressDialog.show(this, "", "Loading!", true); 
setContentView(R.layout.webview); 
mWebView = (WebView) findViewById(R.id.webview); 
mWebView.setWebViewClient(new WebViewClient() { 
    @Override 
    public void onPageFinished(WebView view, String url) { 
     pd.dismiss(); 
    } 
}); 
mWebView.loadUrl("file:///android_asset/index.html"); 
2

使用このコード:

@Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) 
    { 
     myLoadingDialog.show(); 
     super.onPageStarted(view, url, favicon); 
    } 
0

は、このようにしてみてください。

ProgressDialog pg; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    engine.setWebViewClient(new MyWebViewClient()); 
    } 

    public class MyWebViewClient extends WebViewClient { 


    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 

     //WebView link Loader 
     if(pg==null) 
     { 
      pg=new ProgressDialog(NowShowingActivity.this,R.style.MyTheme); 
      pg.setMessage("Loading..."); 
      pg.setCancelable(false); 

      pg.show(); 

     } 

     webViewNowShowing.loadUrl(url); 
     return true; 

    } 

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

     super.onPageFinished(view, url); 
     try { 



      if (pg.isShowing()) { 

       pg.dismiss(); 

       pg = null; 

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

    } 

    public MyWebViewClient() { 
     super(); 

     } 
     //initial WebPage loader 
     public void onPageStarted(WebView webView, String url, Bitmap favicon) { 

      if(pg==null&&pullToRefresh==false){ 

      pg =new ProgressDialog(NowShowingActivity.this,R.style.MyTheme); 
      pg.setMessage("Loading.."); 
      pg.setCancelable(false); 

      pg.show(); 

      } 
     } 
    }  
関連する問題