如何返回由NavHostFragment控制的Fragment内的WebView?

时间:2019-06-29 08:24:19

标签: android navigation-drawer android-architecture-components

当前情况:

  • 只有一个活动叫做MainActivity。
  • MainActivity维护NavHostFragment。
  • 有一个WebViewFragment,它嵌入了一个WebView。
  • Thera是NavHostFragment控制的许多其他片段。

困扰我的是

我可以在WebView内转发网页,但是当我按Back返回WebView内时,即是NavController句柄,将片段弹出。 由于WebView不在片段内,所以不是活动,这意味着没有称为onBackPressed()的方法可以覆盖。

参考:

3 个答案:

答案 0 :(得分:1)

据我了解,您需要一种处理片段上的onBackPressed的方法,对吗?使用NavigationComponent,您可以在onViewCreated中做到这一点:

 requireActivity().onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
            override fun handleOnBackPressed() {
              if (mWebView.canGoBack()) {
                mWebView.goBack();
             } else {
                view.findNavController().popBackStack(R.id.dest, false)
             }
            }
        })

答案 1 :(得分:0)

您可以使用mWeb.goBack();返回上一页或返回。

答案 2 :(得分:0)

添加一个新片段,并在其中放置WebView,使用导航编辑器从WebViewFragment导航到新片段,在导航编辑器的右侧,您可以看到一个选项以Backstack选项进行管理。