webview.goback()跳过上一页并重定向到主网址

时间:2015-12-07 08:31:11

标签: android android-fragments web-applications webview

我在我的应用程序的一个片段中设置了一个webview。背压的问题在于,如果我浏览了我的网页浏览中的5个页面,按下后退按钮会让我一直回到第一步(硬编码的URL)。我需要做的是,当用户在第5页上时按回来获取第4页上的用户,而不是一直到第1页。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_blog, container, false);
    webView = (WebView) rootView.findViewById(R.id.webView1);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.setWebViewClient(new WebViewClient());
            webView.loadUrl("http://www.facebook.com/");

            webView.setOnKeyListener(new View.OnKeyListener() {

                @Override
                public boolean onKey(View v, int keyCode, KeyEvent event) {

                    if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
                        webView.goBack();
                        return true;
                    }
                   return false;
                }
            });
                return rootView;
            }

1 个答案:

答案 0 :(得分:2)

问题是 onKey 方法被调用2次 - 对于KeyEvent.ACTION_DOWN和KeyEvent.ACTION_UP。

所以解决方案是:

webView.setOnKeyListener(new View.OnKeyListener() {
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
            if (webView.canGoBack()) {
                webView.goBack();
                return true;
            }
        }
        return false;
    }
});