/ / Android canGoBack toujours faux - android, webview, webviewclient

Android canGoBack toujours faux - android, webview, webviewclient

J'ai une application Android où j'essaie deaffiche des boutons personnalisés en arrière dans le titre pour indiquer à l’utilisateur qu’ils peuvent revenir en arrière ou en avant. Mon idée était de basculer l'opacité et de définir si elles sont activées ou non si l'utilisateur peut revenir en arrière ou avancer dans la vue Web.

Dans la méthode OnCreateView de mon fragment, on trouve:

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;
}

Et la partie importante de MyWebViewClient () est:

@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...");
}

J'ai vérifié à plusieurs reprises pour m'assurer que je suisne pas écraser MyWebViewClient par une nouvelle instance, ce que je ne suis pas. J'ai aussi déplacé ce OnPageFinished dans le fragment "onCreate" du fragment comme ceci:

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());
}
});

Peu importe ce que je fais, cela affiche toujours celaça ne peut jamais revenir en arrière. false est toujours imprimé même si je clique sur un lien à un autre sur un site Web et navigue dans l'application (enfin, la navigation en avant de toute façon). Merci pour l'aide.

Réponses:

1 pour la réponse № 1

Soyons clairs - laissez toujours votre projet propre si vous vivez des expériences insignifiantes comme celle-ci. Toujours. Toujours. Toujours. DOH!