2013-01-25 11 views
5

Ich habe ähnliche Fragen gesucht und gefunden, aber sie sagen meistens, wie man den Inhalt von webView ändert, nicht wie man ihn wirklich versteckt.So blenden Sie die WebView-Fehlerseite aus. Ist es möglich?

Mein WebView ist zunächst versteckt mit Android: Sichtbarkeit = "weg" in main.xml, ich ändere es dynamisch zu sichtbar mit myWebView.setVisibility (1); wenn die Seite vollständig geladen ist (und es funktioniert). Jetzt möchte ich dieses WebView ausblenden, wenn ein Fehler erkannt wird. Der Grund, warum ich es verstecken wollte, ist, weil ich einen schönen Hintergrund im Layout habe, der über den Fehler informiert. Ich weiß, das ist nicht der beste Ansatz, um dies zu tun, und wahrscheinlich später ändern, aber jetzt, was ich möchte, ist zu lösen, warum das WebView nicht versteckt, wenn ein Fehler passiert (nur zum Spaß, vielleicht).

Dies ist, was ich versucht habe:

@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. 
      // } 
    } 

Irgendwelche Ideen?

+0

Keine Entschuldigung nötig, es ist eine gute Frage – QED

+0

Sie eine benutzerdefinierte Seite zeigen kann, statt eine Fehlerseite. http://stackoverflow.com/questions/4101331/how-to-edit-or-create-custom-error-page-for-webview –

Antwort

1

Das ist meine Idee:

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; 
     } 
    }); 
Verwandte Themen