Как использовать navigateUp, чтобы закрыть приложение - PullRequest
0 голосов
/ 02 июля 2019

Я использую компонент Android Navigation.

Внутри моего HomeFragment я добавляю OnBackPressedCallback

    OnBackPressedCallback callback = new OnBackPressedCallback(true) {
        @Override
        public void handleOnBackPressed() {
            doStuff();
            Navigation.findNavController(view).navigateUp();
        }
    };

    requireActivity().getOnBackPressedDispatcher().addCallback(this, callback);

Проблема в том, что navigateUp не закрывает приложение.

Я пытался вытолкнуть стек, но ничего не изменилось.

Что мне делать?

Спасибо

1 Ответ

2 голосов
/ 02 июля 2019

Согласно документации navigateUp() и popBackStack() документации , оба возвращают значение boolean, указывающее:

true если стек извлечен и пользователь перемещен в другое место назначения, false в противном случае

NavController управляет только своим собственным задним стеком (т. Е. Адресатами, которые вы положили в задний стек), и не содержит или не работает с задним стеком операций.

Если вы просто хотите всегда завершать свою деятельность, когда нажата кнопка «назад», прямой вызов requireActivity().finish() действительно является правильным решением.

В противном случае вам следует вызывать requireActivity().finish() только в том случае, если popBackStack() / navigateUp() вернет false - это ваш признак того, что в заднем стеке NavController больше ничего нет и вам нужно обрабатывать задний стек самостоятельно.

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