2016-09-01 5 views
1

Ich habe eine Android-App, in der ich einige benutzerdefinierte Rück/Vorwärts-Schaltflächen im Titel anzeigen möchte, um den Benutzer wissen zu lassen, dass sie zurück oder vorwärts gehen können. Meine Idee war es, die Opazität umzuschalten und festzulegen, ob sie aktiviert sind oder nicht, wenn der Benutzer im WebView vor- oder zurückgehen kann.Android canGoBack immer falsch

In meinem Fragments OnCreateView Methode ist:

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

Und der wichtige Teil von MyWebViewClient() ist:

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

ich mehrfach überprüft haben, um sicherzustellen, dass ich nicht die MyWebViewClient bin Überschreiben mit eine neue Instanz, und ich nicht. Ich bin umgezogen auch diese OnPageFinished in nur das onCreate fragment wie wie folgt aus:

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

Egal was ich tue, diese immer ausdruckt, dass es nie wieder gehen kann. false wird immer ausgedruckt, obwohl ich auf einen Link nach dem anderen auf einer Website klicke und die App navigiere (na ja, vorwärts navigieren). Danke für die Hilfe.

Antwort

1

Nimm es von mir Leute - immer reinigen Sie Ihr Projekt, wenn Sie wackelige Dinge wie diese erleben. Immer. Immer. Immer. DOH!