2017-04-05 19 views
0

私はWebView(webView)、ProgressBar(progress)、RelativeLayout(error)を持っています。ページが読み込まれ、ページが正常に読み込まれた後でWebViewを表示する必要があるまで、ProgressBarを表示する必要があります。エラーがあれば、RelativeLayout(エラー)が表示されます。問題は、ネットワークに接続できない場合にWebViewが表示されることです。私はそれをどのように機能させるのですか?ここに私のコードです:WebView with ProgressBar and Error handle

webView.setWebViewClient(new WebViewClient(){ 

     @Override 
     public void onLoadResource(WebView view, String url) { 
      webView.setVisibility(View.GONE); 
      progress.setVisibility(View.VISIBLE); 
      error.setVisibility(View.GONE); 
      super.onLoadResource(view, url); 
     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      webView.setVisibility(View.VISIBLE); 
      progress.setVisibility(View.GONE); 
      error.setVisibility(View.GONE); 
      super.onPageFinished(view, url); 
     } 

     @Override 
     public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError errorWebResource) { 
      webView.setVisibility(View.GONE); 
      progress.setVisibility(View.GONE); 
      error.setVisibility(View.VISIBLE); 
      super.onReceivedError(view, request, errorWebResource); 
     } 

    }); 

    webView.loadUrl("https://www.google.com"); 

答えて

0
  1. 一般的な用語で、あなたがそこに開始することもできますので、スーパーの呼び出しは、カスタムコードの前に実行するようにして欲しいです。 スーパーコールを気にしない場合は、代わりにスーパーコールを削除することができます。

  2. onPageFinishedにブレークポイントを配置したい場合があります。私はそれがインターネット接続がないときにあなたが得る呼び出しだと思う。

  3. あなたの問題はエラーセクションにないかもしれませんが、webView.loadUrl()の実行中です。私はあなたがこの受け入れ答えを確認することをお勧め

Detect whether there is an Internet connection available on Android .Thereはまた、あなたがこの回答を好きではない場合は、Androidの中で、ネットワーク接続をチェックする方法についてはSOで他の回答の何百ものです。それも電話をかけるしようとはしませんネットワーク接続がありません場合は、

if (isNetworkAvailable) { 
    webView.loadUrl("https://www.google.com"); 
} else { 
    error.setVisibility(View.VISIBLE); 
} 

この方法:

だから、あなたの呼び出しは次のようになります。