Как вернуться с WebView внутри Fragment, контролируемого NavHostFragment? - PullRequest
0 голосов
/ 29 июня 2019

Текущая ситуация:

  • Существует только одно действие под названием MainActivity.
  • MainActivity поддерживает NavHostFragment.
  • Существует фрагмент WebViewFragment, в который встроен WebView.
  • Thera - множество других фрагментов, контролируемых NavHostFragment.

Что меня беспокоит:

Я могу пересылать веб-страницы внутри WebView, но когда я нажимаю назад, чтобы вернуться внутрь WebView, дескриптор NavController делает это, вытаскивает фрагмент. Поскольку WebView находится внутри фрагмента, а не действия, это означает, что нет метода с именем onBackPressed() для переопределения.

Справка:

Ответы [ 3 ]

1 голос
/ 02 июля 2019

Насколько я понимаю, вам нужен способ обработки 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)
             }
            }
        })
0 голосов
/ 02 июля 2019

добавьте новый фрагмент, и в этом месте ваш WebView, используя редактор навигации, перейдите от WebViewFragment к новому фрагменту, в правой части редактора навигации вы увидите опцию backstack, которой можно управлять.

0 голосов
/ 29 июня 2019

вы можете использовать mWeb.goBack ();вернуться на предыдущую страницу или вернуться назад.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...