2013-01-25 32 views
5

我已經搜索並發現了類似的問題,但他們大多說如何更改webView內容,而不是如何真正隱藏它。我使用android:visibility =「gone」在main.xml中初始隱藏了我的webView,使用myWebView.setVisibility(1)將其更改爲可見:當頁面完全加載(和它的作品)。現在,我想在檢測到錯誤時隱藏這個webView。我想隱藏它的原因是因爲我在佈局中有一個很好的背景,可以通知有關錯誤。我知道這不是最好的方法來做到這一點,並可能稍後再改變它,但現在,我想解決的是爲什麼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; 
     } 
    }); 
相關問題