【问题标题】:How to make WebView inside fragment to go back to previous tab?如何使片段内的 WebView 返回上一个选项卡?
【发布时间】:2017-11-06 09:37:37
【问题描述】:

我有一个包含 webview 的片段。该片段在 viewPager 的所有四个页面中都被重用。我想要的是,当用户单击后退按钮时,我希望 webView 片段返回到上一个选项卡的当前 webViewFragment。最后退出活动。如果 webView 在这样的活动中,我可以轻松地做到这一点:

@Override
    public void onBackPressed() {
        if (mWebview.canGoBack())
            mWebview.goBack();
        else
            super.onBackPressed();

    }

但我不能在片段中执行此操作,因为片段无法覆盖 onBackPressed()。如何在 viewPager 内的片段中执行此操作

【问题讨论】:

  • 你可以使用一个接口并在activity中实现它并从fragment调用它,从fragment调用这个接口。
  • 如果有前一页,为什么不在活动中覆盖 onBackPressed 并在其中调用 setCurrentItem()。

标签: java android android-fragments webview android-viewpager


【解决方案1】:

您可以在 webview 上实现setOnKeyListener 来处理返回按钮。

mWebview.setOnKeyListener(new View.OnKeyListener(){

            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if (keyCode == KeyEvent.KEYCODE_BACK
                        && event.getAction() == MotionEvent.ACTION_UP
                        && mWebview.canGoBack())
                {
                    mWebview.goBack();
                    return true;
                }
                return false;
            }

        });

如果您的 web 视图中没有上一页,那么它将触发通常的onBackPressed

希望对你有帮助。

【讨论】:

    【解决方案2】:

    此代码非常适合片段 webview 回压。

    您可以在 webview 上实现setOnKeyListener 来处理返回按钮

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-15
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      • 2013-07-09
      相关资源
      最近更新 更多