Tôi gặp sự cố với Android Web View. Khi tôi ghi đè hàm nênOverrideUrlLoading trong lớp của tôi mở rộng WebViewClient thì WebView.canGoBack()
trả về luôn false
.webView.canGoBack() luôn sai
Dưới đây là mã của tôi
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;
}
}
Và trong hoạt động của tôi:
@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);
}
Vấn đề là các chức năng webView.canGoBack
(luôn luôn trong hoạt động của tôi) trả luôn false
:
@Override
public void onBackPressed() {
//ALWAYS FALSE
if (webView.canGoBack()) {
webView.goBack();
}
}
Nếu tôi không ghi đè lên shouldOverrideUrlLoading, hơn onBackPressed hoạt động như mong đợi. Có gì sai trong mã của tôi?
Cảm ơn
[EDIT]: Tôi cũng đã cố gắng (nhưng không thành công) để tạo webViewClient theo cách này:
ebView.setWebViewClient(new SMWebViewClient());
Cảm ơn @Xenolion vì đề xuất nhưng không có thay đổi nào trả về sai. – fciri
Nhưng tại sao bạn muốn đặt webclient? – Xenolion
Bởi vì mỗi lần bạn cung cấp cho webview một url khác! – Xenolion