Android canGoBack всегда ложный

У меня есть приложение для Android, в котором я пытаюсь отобразить несколько пользовательских кнопок "назад" / "вперед" в заголовке, чтобы пользователь знал, что он может идти вперед или назад. Моя идея состояла в том, чтобы переключить непрозрачность и установить, включены ли они, если пользователь может вернуться назад или вперед в WebView.

Внутри моего фрагмента метод 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 всегда распечатывается, даже если я нажимаю на ссылку после ссылки на веб-сайте и перемещаюсь по приложению (в любом случае, переходим вперед). Спасибо за помощь.

1 ответ

Возьмите это от меня, ребята - всегда очищайте свой проект, если вы испытываете такие странные вещи. Всегда. Всегда. Всегда. DOH!

Другие вопросы по тегам