Android canGoBack始终为false

时间:2016-09-01 01:42:51

标签: android webview webviewclient

我有一个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 个答案:

答案 0 :(得分:1)

从我这些人那里拿走它 - 如果你遇到像这样糟糕的事情,总是清理你的项目。总是。总是。总是。 DOH!