我遇到了一个关于Android Web View的问题。当我在扩展WebViewClient类的类中重写shouldOverrideUrlLoading函数时,WebView.canGoBack()
始终返回false
。
以下是我的代码:
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;
}
}
在我的活动中:
@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);
}
问题在于函数
webView.canGoBack
(始终在我的活动中)始终返回false
: @Override
public void onBackPressed() {
//ALWAYS FALSE
if (webView.canGoBack()) {
webView.goBack();
}
}
如果我不覆盖shouldOverrideUrlLoading,则onBackPressed按预期工作。我的代码有什么问题吗?
谢谢
[编辑]: 我也尝试过(没有成功)以这种方式创建webViewClient:
ebView.setWebViewClient(new SMWebViewClient());