Android webview onReceivedError die Anzeige von benutzerdefinierten Fehlerseiten-und reload-Vorherige url onResume
Nehmen wir an, dass eine url bereits geladen ist (nennen wir es mal die original-url).
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
webView.loadUrl("file:///android_asset/missing.html");
}
});
Ich habe meine eigenen Fehler Seite um zu verhindern, dass die "Webseite nicht verfügbar Meldung" erscheint.
Die app muss neu laden der webview jedes mal, wenn es wieder aufgenommen wird. So habe ich die folgenden Zeilen des Codes:
@Override
protected void onResume() {
super.onResume();
webView.reload();
}
Das problem hier ist, dass, wenn der Fehler die Seite geladen ist (zum Beispiel, wenn der Benutzer nicht mit dem internet verbunden), und dann eine Verbindung wieder verfügbar ist und der Nutzer die app, die original-url nicht geladen ist (das scheint die Logik, die aktuelle ist jetzt missing.html). Aber ist das ein netter Ansatz? Irgendwelche Vorschläge für das problem?
Gibt es auch eine Schaltfläche aktualisieren, wenn der Benutzer will, um neu zu laden der Inhalte. Gleiche Problem hier.
- Möchten Sie vielleicht akzeptieren die hilfreichen Antworten auf ältere Fragen. Sie macht die Menschen eher geneigt, Ihre Antwort neue Fragen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde überprüfen internet-Konnektivität in onResume() wie vorgeschlagen auf http://developer.android.com/training/basics/network-ops/managing.html
Laden Sie die gewünschte url anstelle der Verwendung von webView.reload(), etwa so:
oder gehen Sie zurück zur vorherigen Seite mit:
Es ist nicht nur der mobilen Verbindung, kann sinken, aber auch hier kann die Seite nicht mehr verfügbar ist und wie Sie richtig sagen, mit webview.loadUrl("someerrorpage.html") erstellen fake-Geschichte und Probleme verursachen, wenn der Benutzer versucht, zu aktualisieren oder drücken Sie zurück.
Meine Lösung ist, ersetzen Sie den Inhalt des Standard-Fehler-Seite mit meinem eigenen z.B.