Удалить OnBackPressedCallback - PullRequest
       39

Удалить OnBackPressedCallback

1 голос
/ 08 апреля 2020

У меня есть операция, которая загружает данные из inte rnet, и она отлично работает, за исключением того, что мне нужно дважды щелкнуть кнопку назад, чтобы завершить sh это. Я также заметил, что в действиях, которые не подключаются к inte rnet, кнопка «Назад» работает с первого нажатия. и при отладке я обнаружил, что обратный вызов менеджера фрагментов обрабатывает первый щелчок

        FragmentManager.this.handleOnBackPressed();

из источника

void handleOnBackPressed() {
    // First, execute any pending actions to make sure we're in an
    // up to date view of the world just in case anyone is queuing
    // up transactions that change the back stack then immediately
    // calling onBackPressed()
    execPendingActions();
    if (mOnBackPressedCallback.isEnabled()) {
        // We still have a back stack, so we can pop
        popBackStackImmediate();
    } else {
        // Sigh. Due to FragmentManager's asynchronicity, we can
        // get into cases where we *think* we can handle the back
        // button but because of frame perfect dispatch, we fell
        // on our face. Since our callback is disabled, we can
        // re-trigger the onBackPressed() to dispatch to the next
        // enabled callback
        mOnBackPressedDispatcher.onBackPressed();
    }
}

, хотя я не использую фрагмент

1 Ответ

0 голосов
/ 08 апреля 2020

Я могу предложить временное решение вашей проблемы, так как трудно точно понять, что является причиной этого. Чтобы решить это, вы можете переопределить onBackPressed() в своей Деятельности и завершить sh это там.

@Override
public void onBackPressed()
{
     finish();
}
...