【问题标题】:webview.goback() skips the previous page and redirects to the main urlwebview.goback() 跳过上一页并重定向到主 url
【发布时间】:2015-12-07 08:31:10
【问题描述】:

我在我的应用程序的一个片段中设置了一个 web 视图。 backpress 的问题是,如果我在 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;
            }

【问题讨论】:

标签: android android-fragments web-applications webview


【解决方案1】:

问题在于 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;
    }
});

【讨论】:

    猜你喜欢
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 2017-05-29
    • 2015-10-01
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    相关资源
    最近更新 更多