У меня есть приложение для Android, в котором я пытаюсь отобразить некоторые пользовательские кнопки назад/вперед в заголовке, чтобы пользователь знал, что может вернуться или вперед. Моя идея заключалась в том, чтобы переключить непрозрачность и установить, разрешены ли они, если пользователь может вернуться или переместиться в WebView.Android canGoBack всегда false
Внутри метода OnCreateView моего фрагмента является:
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.web_view_fragment, container, false);
Toolbar toolbar = (Toolbar) v.findViewById(R.id.webview_toolbar);
TextView titleText = (TextView) toolbar.findViewById(R.id.webTitle);
titleText.setText("SBN Viewer");
webView = (WebView) v.findViewById(R.id.webview);
setOnClickListeners(toolbar);
this.toolbar = toolbar;
WebViewClient webclient = new MyWebViewClient(toolbar, getActivity());
webView.setWebViewClient(webclient);
return v;
}
И важная часть MyWebViewClient() является:
@Override
public void onPageFinished(WebView view, String url) {
LogHelper.d(this.getClass().getSimpleName(), "Before super. Can go back? " + view.canGoBack());
super.onPageFinished(view, url);
LogHelper.d(this.getClass().getSimpleName(), "After super. Go Back? " + view.canGoBack());
enableBecauseFinished(view);
if(view.canGoBack())
LogHelper.d(this.getClass().getSimpleName(), "We Can Go Back Here...");
}
Я много раз проверил, чтобы убедиться, что я не переписывая MyWebViewClient с новый экземпляр, а я нет. Я также переехал этот OnPageFinished в OnCreate только фрагмента, как например:
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
LogHelper.d(this.getClass().getSimpleName(), "Before super. Can go back? " + view.canGoBack());
super.onPageFinished(view, url);
LogHelper.d(this.getClass().getSimpleName(), "After super. Go Back? " + view.canGoBack());
}
});
Независимо от того, что я делаю, это всегда печатает, что он никогда не сможет вернуться. false всегда распечатывается, хотя я нажимаю ссылку после ссылки на веб-сайте и просматриваю приложение (ну, в любом случае, перейдите в любом направлении). Спасибо за помощь.