Ich habe ein Problem mit Android Web View. Wenn ich die Funktion sentOverrideUrlLoading in meiner Klasse überschreiben, die WebViewClient erweitert, gibt WebView.canGoBack()
immer false
zurück.webView.canGoBack() immer falsch
Unten ist mein Code
public class SMWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
view.loadUrl(request.getUrl().toString());
return true;
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String uri) {
view.loadUrl(uri);
return true;
}
}
Und in der eigenen Aktivität:
@BindView(R.id.main_webview) SMWebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
webView.setWebViewClient(new SMWebViewClient(){
@Override
public void onPageFinished(WebView view, String url){
}
});
webView.clearCache(true);
webView.clearHistory();
webView.loadUrl(Constant.baseUrl + Constant.homeUrl);
}
Das Problem ist, dass die Funktion webView.canGoBack
(immer in meiner Tätigkeit) gibt immer false
:
@Override
public void onBackPressed() {
//ALWAYS FALSE
if (webView.canGoBack()) {
webView.goBack();
}
}
Wenn ich shouldOverrideUrlLoading nicht überschreibe, dann onBackPressed funktioniert wie erwartet. Was ist falsch in meinem Code?
Dank
[EDIT]: Ich habe auch versucht (ohne Erfolg) webViewClient auf diese Weise zu erstellen:
ebView.setWebViewClient(new SMWebViewClient());
Dank @Xenolion für den Vorschlag, aber nichts ändert sich falsch zurück. – fciri
Aber warum möchten Sie einen Webclient einstellen? – Xenolion
Denn jedes Mal, wenn Sie Ihrem Webview eine andere URL geben! – Xenolion