2013-01-25 92 views
5

私は同様の質問を検索して見つけましたが、WebViewのコンテンツをどのように変更するのかというと、実際に隠す方法ではなく、WebViewエラーページを非表示にする方法。出来ますか?

webViewは、最初はmain.xmlのandroid:visibility = "gone"を使って非表示になっていますが、私はmyWebView.setVisibility(1)で目に見えるように変更します。ページが完全にロードされたとき(と動作するとき)。今、エラーが検出されたときにこのWebViewを非表示にしたいと思います。私がそれを隠そうとしていたのは、エラーについての情報を伝える素晴らしい背景がレイアウトにあるからです。これを行うにはこれが最善の方法ではないことが分かっていますが、おそらく後で変更するのですが、今、解決したいのは、エラーが発生したときにWebViewが隠れていない理由です。

これは私が試したものです:

@Override 
public void onReceivedError (WebView view, int errorCode, 
          String description, String failingUrl) { 

     myWebView = (WebView) findViewById(R.id.webview); 
     // myWebView.setVisibility(0); // Doesn't work! 

     // if (errorCode == ERROR_TIMEOUT) { // Commented just for trying 

     try {view.stopLoading();} catch(Exception e){} 
     try {view.clearView();} catch(Exception e){} 

      view.loadUrl("file:///android_asset/error.html"); // This Works but I don't want it this way. 
      view.setBackgroundColor(0x00000000); // Trying to make it transparent. Doesn't work here 
      view.setVisibility(View.GONE); // Doesn't work. I have tried also with myWebView. 
      // } 
    } 

任意のアイデア?

+0

は必要ありませ謝罪、それはあなたが代わりにエラーページのカスタムページを表示することができます – QED

+0

良い質問です。 http://stackoverflow.com/questions/4101331/how-to-edit-or-create-custom-error-page-for-webview –

答えて

1

これが私の考えではありません:

boolean isPageError = false; 

webView.setWebViewClient(new WebViewClient() { 
     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      isPageError = false; 
     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      if (isPageError){ 
       webview.setVisibility(View.GONE); 
       txtError.setVisibility(View.VISIBLE); 
       txtError.setText("error message"); 
      } 
     } 

     @Override 
     public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
      isPageError = true; 
     } 
    }); 
関連する問題