OnBackPressedCallback вызывается, но приложение не возвращается - PullRequest
0 голосов
/ 09 июня 2019

Я недавно обновил свои зависимости, чтобы включить изменение OnBackPressedCallback из интерфейса в абстрактный класс.

Я настроил все согласно новой документации здесь , но я чувствую, что все работает не так, как должно.

Мой фрагмент OnCreate очень похож на документацию:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        requireActivity().onBackPressedDispatcher.addCallback(this) {
            backPressed()
    }
}

Когда я нажимаю кнопку возврата, код в backPressed() запускается, но больше ничего не происходит.

Я попытался вызвать handleBackPressed() и requireActivity().onBackPressedDispatcher.onBackPressed() и requireActivity().onBackPressed() изнутри обратного вызова, но все они вызывают ошибку StackOverflowError, потому что кажется, что этот обратный вызов выполняется рекурсивно.

Должно быть что-то действительно очевидное, чего мне не хватает ...

1 Ответ

1 голос
/ 09 июня 2019

Когда вы регистрируете OnBackPressedCallback, вы берете на себя ответственность за обработку кнопки возврата.Это означает, что при обратном вызове не будет происходить никакого другого поведения при нажатой спине.

Если вы используете Навигация , вы можете использовать NavController для извлечения стека назад:

requireActivity().onBackPressedDispatcher.addCallback(this) {
    backPressed()
    // Now actually go back
    findNavController().popBackStack()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...